如何使用每行中指定的列从矩阵创建向量,而不在Python中循环?

如何使用每行中指定的列从矩阵创建向量,而不在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,

假设我有一个形状为(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,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])