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

标签 python arrays numpy multidimensional-array

当维数 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/

相关文章:

python - 基于神经网络的文档排名

arrays - 如何创建具有大小的 Swift 空二维数组

c - 二维数组的大小在哪里以及如何使用点将 1 维变为 2 维?

python - 是否有相当于 MATLAB 的 conv2(h1,h2,A ,'same' ) 的 python ?

python-3.x - 如何修复当我尝试在终端上运行构建图时弹出的张量板错误

python - 如何从django项目的根目录访问文件

python - 为什么不是 numpy.mean 多线程?

python - 为什么 yield 表达式不能作为函数参数?

numpy - Cython 自定义数据类型 ndarray

Ruby-用另一个数组从一个数组中添加/减去元素