Python 二维到一维numpy数组,每行具有列索引
我试图为矩阵中的每一行建立一列索引 假设我有一个numpy数组Python 二维到一维numpy数组,每行具有列索引,python,arrays,numpy,Python,Arrays,Numpy,我试图为矩阵中的每一行建立一列索引 假设我有一个numpy数组a,其形状(n,m) 我还有一个numpy数组B,其形状(n,)包含0到m之间的整数,因此它们可以用作a第二轴的索引 我想得到一个numpy数组C,它的形状(n,)的形状C[I]=a[I,B[I],因此a的每一行都会根据B中的索引生成一个值 当然,我可以在for循环或列表理解中使用最后一个表达式,但如何使用numpy的效率呢 我的第一个直觉是C=A[:,B],但这显然产生了其他东西。(形状(n,n))如果您很接近,请尝试: C=A[范
a
,其形状(n,m)
我还有一个numpy数组
B
,其形状(n,)
包含0到m之间的整数,因此它们可以用作a
第二轴的索引
我想得到一个numpy数组C
,它的形状(n,)
的形状C[I]=a[I,B[I]
,因此a
的每一行都会根据B
中的索引生成一个值
当然,我可以在for循环或列表理解中使用最后一个表达式,但如何使用numpy的效率呢
我的第一个直觉是C=A[:,B]
,但这显然产生了其他东西。(形状(n,n)
)如果您很接近,请尝试:
C=A[范围(len(B)),B]
这应该会产生
C[i]=A[i,B[i]]
我想不出任何简单的方法来理解列表,但是如果你想清理语法,你可以做一些类似C=np.array([A[i,val]代表i,val在枚举(B)])的事情。
!我现在使用C=A[np.arange(B.size),B]
,因为我认为使用np.arange
比使用range
更有效