Python 在numpy中为循环对其进行矢量化

Python 在numpy中为循环对其进行矢量化,python,numpy,indexing,Python,Numpy,Indexing,我想知道如何为循环将其矢量化。给定一个2x2x2数组x和一个数组,其中每个元素都是我想要得到的x[I,j,k]数组的ith,jth和kth元素 给定数组x和y x = np.arange(8).reshape((2, 2, 2)) y = [[0, 1, 1], [1, 1, 0]] 我想得到: x[0,1,1]=3和x[1,1,0]=6 我试过: print(x[y]) 但它显示: array([[2, 3], [6, 7], [4, 5]]) 所以我最终做

我想知道如何为循环将其矢量化。给定一个
2x2x2
数组
x
和一个数组,其中每个元素都是我想要得到的
x[I,j,k]数组的
ith,jth和kth
元素

给定数组
x
y

x = np.arange(8).reshape((2, 2, 2))
y = [[0, 1, 1], [1, 1, 0]]
我想得到:

x[0,1,1]=3
x[1,1,0]=6

我试过:

print(x[y]) 
但它显示:

array([[2, 3],
       [6, 7],
       [4, 5]])
所以我最终做了:

for y_ in y:
    print(x[y_[0], y_[1], y_[2]])

这很有效,但我忍不住认为有更好的方法。

使用转置的
y
zip(*y)
作为索引;您需要将每个维度的索引作为一个元素来使用:

x[tuple(zip(*y))]
# array([3, 6])