如何使用每行中指定的列从矩阵创建向量,而不在Python中循环?
假设我有一个形状为(N,d)的矩阵和一个大小为N的向量,表示矩阵中的哪一列与给定的行相关。如何返回由矩阵和相关列中的值给出的大小为N的向量 例如:如何使用每行中指定的列从矩阵创建向量,而不在Python中循环?,python,numpy,matrix,indexing,Python,Numpy,Matrix,Indexing,假设我有一个形状为(N,d)的矩阵和一个大小为N的向量,表示矩阵中的哪一列与给定的行相关。如何返回由矩阵和相关列中的值给出的大小为N的向量 例如: M = [[ 2, 4, 1, 8], [3, 5, 7, 1], [2, 5, 3, 9], [1, 2, 3, 4]] V = [2, 1, 0, 1] 我试过这样的方法: M[:,V] 但这会返回一个矩阵,它是NXN 有没有一种简单的方法来格式化它,而不需要编写for循环,这样我就可以得到以下向量: V' = [1,
M = [[ 2, 4, 1, 8],
[3, 5, 7, 1],
[2, 5, 3, 9],
[1, 2, 3, 4]]
V = [2, 1, 0, 1]
我试过这样的方法:
M[:,V]
但这会返回一个矩阵,它是NXN
有没有一种简单的方法来格式化它,而不需要编写for循环,这样我就可以得到以下向量:
V' = [1,5,2,2]
使用np.arange(len(V))
索引行号,使用V
索引列:
In [110]: M = [[ 2, 4, 1, 8],
.....: [3, 5, 7, 1],
.....: [2, 5, 3, 9],
.....: [1, 2, 3, 4]]
In [111]: V = [2, 1, 0, 1]
In [112]:
In [112]: M = np.array(M)
In [113]: M[np.arange(len(V)),V]
Out[113]: array([1, 5, 2, 2])