在一个numpy的阵列访问行特定元素的矢量方式(Vectorized way of accessin

2019-10-20 21:07发布

我有一个2-d NumPy的阵列和一组索引,其大小是NumPy的阵列的第一维度。

X = np.random.rand(5, 3)
a = np.random.randint(0, 3, 5)

我需要做的是这样

for i, ind in enumerate(a):
    print X[i][ind]

是否有这样做的一个量化的方式?

Answer 1:

干得好:

X = np.random.rand(5, 3)
a = np.random.randint(0, 3, 5)

In [12]: X[np.arange(a.size), a]
Out[12]: array([ 0.99653335,  0.30275346,  0.92844957,  0.54728781,  0.43535668])
In [13]: for i, ind in enumerate(a):
            print X[i][ind]
#   ....:
#0.996533345844
#0.30275345582
#0.92844956619
#0.54728781105
#0.435356681672

我假设在这里,你不需要一个单独的行每一个值,只是想提取值。



文章来源: Vectorized way of accessing row specific elements in a numpy array