Python 在numpy中每行选择多个元素

Python 在numpy中每行选择多个元素,python,numpy,Python,Numpy,与 我怎样才能让Numpy给我索引为cp[0,:]的ad元素作为第一行(索引为[2,3,1,1,2,0]所以第一行应该是[0.9,0.1,0.8,0.8,0.9,0.5]),索引为cp[1,:]的元素作为第二行等等 因此,结果应该是: ad = np.array([ 0.5, 0.8, 0.9, 0.1]) cp = np.array([[2,3,1,1,2,0],[1,0,1,3,1,2],[1,1,1,1,1,1],[0,1,2,3,2,2]]) 当然,最好是以高效、优雅的方式。Nu

我怎样才能让Numpy给我索引为
cp[0,:]
ad
元素作为第一行(索引为
[2,3,1,1,2,0]
所以第一行应该是
[0.9,0.1,0.8,0.8,0.9,0.5]
),索引为
cp[1,:]
的元素作为第二行等等

因此,结果应该是:

ad = np.array([ 0.5,  0.8,  0.9,  0.1])
cp = np.array([[2,3,1,1,2,0],[1,0,1,3,1,2],[1,1,1,1,1,1],[0,1,2,3,2,2]])

当然,最好是以高效、优雅的方式。NumPy阵列支持广播。它将播放
ad
到所需的形状。那么这个

[[0.9, 0.1, 0.8, 0.8, 0.9, 0.5],
 [0.8, 0.5, 0.8, 0.1, 0.8, 0.9],
 [0.8, 0.8, 0.8, 0.8, 0.8, 0.8],
 [0.5, 0.8, 0.9, 0.1, 0.9, 0.9]]
会有用的

或者,您可以使用
np.take()


..... <代码>广告[cp]?很好:D我现在觉得自己非常愚蠢
>>> ad[cp]
array([[ 0.9,  0.1,  0.8,  0.8,  0.9,  0.5],
       [ 0.8,  0.5,  0.8,  0.1,  0.8,  0.9],
       [ 0.8,  0.8,  0.8,  0.8,  0.8,  0.8],
       [ 0.5,  0.8,  0.9,  0.1,  0.9,  0.9]])
>>> np.take(ad, cp)
array([[ 0.9,  0.1,  0.8,  0.8,  0.9,  0.5],
       [ 0.8,  0.5,  0.8,  0.1,  0.8,  0.9],
       [ 0.8,  0.8,  0.8,  0.8,  0.8,  0.8],
       [ 0.5,  0.8,  0.9,  0.1,  0.9,  0.9]])