通过列向量索引矩阵

时间:2016-09-17 16:08:09

标签: python numpy

我有一个大小为m x n的矩阵M,以及m x 1的列向量。 对于m行中的每一行,我需要拾取对应于列向量中的值减去1的索引。因此,给我回答m x 1.我该怎么做?

zb=a1.a3[np.arange(a1.z3.shape[0]),a1.train_labels-1]

zb.shape
Out[72]: (4000, 4000)

a1.z3.shape
Out[73]: (4000, 26)

a1.train_labels.shape
Out[74]: (4000, 1)

a1.train_labels.head()
Out[75]: 
      22
1618  25
2330   1
1651  17
133   17
2360   5


#my column vector a1.train_labels is shuffled. I don't want to unshuffle it.

1 个答案:

答案 0 :(得分:1)

如果你的2d数组是 M ,索引是1d数组v,那么你可以使用

M[np.arange(len(v)), v - 1]

例如:

In [14]: M = np.array([[1, 2], [3, 4]])

In [15]: v = np.array([2, 1])

In [16]: M[np.arange(len(v)), v - 1]
Out[16]: array([2, 3])