Numpy:查找每行元素的列索引

Mic*_*ael 6 python numpy

假设我有一个包含要查找的元素的向量:

a = np.array([1, 5, 9, 7])
Run Code Online (Sandbox Code Playgroud)

现在我有一个矩阵,应该在其中搜索这些元素:

M = np.array([
[0, 1, 9],
[5, 3, 8],
[3, 9, 0],
[0, 1, 7]
])
Run Code Online (Sandbox Code Playgroud)

现在,我想获得在该行的列索引阵列中告诉ĴM元素Ĵa发生。

结果将是:

[1, 0, 1, 2]
Run Code Online (Sandbox Code Playgroud)

Numpy 提供这样的功能吗?

(感谢列表推导式的答案,但这不是性能方面的选择。我也很抱歉在最后一个问题中提到了 Numpy。)

Ben*_*min 4

请注意以下结果:

M == a[:, None]
>>> array([[False,  True, False],
           [ True, False, False],
           [False,  True, False],
           [False, False,  True]], dtype=bool)
Run Code Online (Sandbox Code Playgroud)

可以通过以下方式检索索引:

yind, xind = numpy.where(M == a[:, None])
>>> (array([0, 1, 2, 3], dtype=int64), array([1, 0, 1, 2], dtype=int64))
Run Code Online (Sandbox Code Playgroud)