Python 以高效的方式从3d numpy中选择多个值

Python 以高效的方式从3d numpy中选择多个值,python,numpy,Python,Numpy,我有一个非常大的3d numpy,我想从中提取很多值(x,y,z) 为了简单起见,我们假设这是numpy: import numpy as np a = np.arange(64).reshape(4,4,4) 我想从中提取以下点集合的值: points = [[3,0,0],[0,1,0],[3,0,1],[2,3,1]] 在本例中,预期结果应为: [48,4,49,45] 出于性能考虑,我希望避免像以下代码那样进行迭代: points = [[3,0,0],[0,1,0],[3,0,

我有一个非常大的3d numpy,我想从中提取很多值(x,y,z)

为了简单起见,我们假设这是numpy:

import numpy as np
a = np.arange(64).reshape(4,4,4)
我想从中提取以下点集合的值:

points = [[3,0,0],[0,1,0],[3,0,1],[2,3,1]]
在本例中,预期结果应为:

[48,4,49,45]
出于性能考虑,我希望避免像以下代码那样进行迭代:

points  = [[3,0,0],[0,1,0],[3,0,1],[2,3,1]]
for i in points:
    print(a[i[0],i[1],i[2]])

试试这个。使用numpy fancy/advanced

>>> import numpy as np
>>> a = np.arange(64).reshape(4,4,4)

>>> points = [[3,0,0],[0,1,0],[3,0,1],[2,3,1]]
>>> points = np.array(points)

>>> i = points[:, 0]
>>> j = points[:, 1]
>>> k = points[:, 2]
>>> a[i, j, k]
array([48,  4, 49, 45])