首先,对于这个不太完美的描述性标题感到抱歉。
我有一个 (500, 500, 500) float 组“A”,和另一个 (500, 500, 500) 整数数组“Ind”。
我想形成第三个(500, 500, 500) ndarray“Anext”,其中“Anext”中索引为(x, y, z)的条目是A[B[x, y, z], y ,z]。
我研究过索引,但我发现很难想出一个有用的解决方案。我感谢任何帮助。
最佳答案
使用numpy.indices()
创建轴1和轴2的索引数组,示例如下:
import numpy as np
a = np.random.rand(4, 4, 4)
ind = np.random.randint(0, 4, size=(4, 4, 4))
i0, i1, i2 = np.indices(a.shape)
b = a[ind, i1, i2]
检查结果:
for (i, j, k), v in np.ndenumerate(b):
assert v == a[ind[i, j, k], j, k]
i0
、i1
、i2
的形状为(4, 4, 4)
,保存一些内存,您还可以使用numpy.ix_()
:
i0, i1, i2 = np.ix_(*[np.arange(d) for d in a.shape])
其中 i1.shape
、i2.shape
为 (1, 4, 1), (1, 1, 4)
关于python - 需要 Numpy 花哨的索引建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34937908/