假设我有3 x 2矩阵
A = np.arange(3*2).reshape(3,2)
并希望按索引数组
选择元素I = [0, 1, 0]
获取
[[0],[3],[4]]
我该怎么做?
以这种方式写作
A[:,[0,1,0]]
给出了完全不同的东西(什么?)
答案 0 :(得分:3)
您可以做的是传递第一维值的可迭代,以及第二维的可迭代(例如列表)。类似的东西:
I = [0, 1, 0]
A[range(len(I)),I]
这会产生:
>>> A[range(len(I)),I]
array([0, 3, 4])
如果您想要它作为二维数组,您可以使用额外的重塑:
>>> A[range(len(I)),I].reshape(-1,1)
array([[0],
[3],
[4]])
A[:,[0,1,0]]
给出了完全不同的东西(什么?)
它创建一个矩阵,其中第一个列是0
的第一个(A
)列,第二个列是第二个( 1
的{{1}})列,第三列又是A
的第一列(0
)。