Python 在numpy中每行选择多个元素
与 我怎样才能让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
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]])