gpt4 book ai didi

python - Numpy 数组 任意维度的顺序索引数组

转载 作者:太空宇宙 更新时间:2023-11-03 14:12:28 25 4
gpt4 key购买 nike

当维数 n 任意时,是否可以顺序索引 numpy 数组中的点?

n=4 时所需行为的示例:

>>> A = np.mgrid[[slice(0,11,1)]*4]
>>> A[XXX_0] # The "first" point in A
array([0,0,0,0])
>>> A[XXX_1] # The "second" point in A
array([0,0,0,1])
>>> A[XXX_11]
array([0,0,1,0])
>>> A[XXX_14640] # The "last" point in A
array([10,10,10,10])

应该用什么替换上面的 XXX 才能得到上面的输出?

我不想将 A 转换为 2D 数组(例如,使用 A = A.T.reshape(-1,n)),因为这会删除网格结构(由 mgrid 生成)对于我的应用程序来说是必需的。

最佳答案

您可以使用 A = A.T.reshape(-1,n) 的以下变体:

B = A.reshape(n, -1).T
  • A 不会被覆盖,并且其网格结构仍然保留。
  • 不复制任何数据 - BA 的 View (仅有效,因为我们在 .T 之前 reshape )

现在您可以使用 A 访问网格结构中的数据,使用 B 访问平面结构中的相同数据。

示例:

A = np.mgrid[[slice(0,11,1)]*4]
B = A.reshape(4, -1).T

# modify first point
print(B[0]) # [0 0 0 0]
B[0] = [1, 3, 3, 7]
print(A[:, 0, 0, 0, 0]) # [1 3 3 7]

关于python - Numpy 数组 任意维度的顺序索引数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48405005/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com