这个问题在这里已有答案:
例如,我有两个numpy数组,
A = np.array(
[[0,1],
[2,3],
[4,5]])
B = np.array(
[[1],
[0],
[1]], dtype='int')
我想从 A
的每一行中提取一个元素,并且该元素由 B
索引,所以我想要以下结果:
C = np.array(
[[1],
[2],
[5]])
我试过 A[:, B.ravel()]
,但它会播出 B
,而不是我想要的 . 也看了 np.take
,似乎不是我的问题的正确解决方案 .
但是,我可以通过转置 A
来使用 np.choose
,
np.choose(B.ravel(), A.T)
但还有其他更好的解决方案
2 回答
你可以使用NumPy's purely integer array indexing -
样品运行 -
请注意,如果
B
是1D
数组或此类列索引的列表,则可以使用.ravel()
跳过展平操作 .样品运行 -