Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/355.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 二维到一维numpy数组,每行具有列索引_Python_Arrays_Numpy - Fatal编程技术网

Python 二维到一维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[范

我试图为矩阵中的每一行建立一列索引

假设我有一个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[范围(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
更有效