给定一个2D numpy数组A
和一个numpy数组col
,其行数和值的数量与A
中的列数相同,我怎样才能获得一个新的一维数组从A
?
示例:
np.random.seed(0)
A = np.random.randint(10, size=(5, 3))
A
# array([[5, 0, 3],
# [3, 7, 9],
# [3, 5, 2],
# [4, 7, 6],
# [8, 8, 1]])
col = np.random.randint(A.shape[1], size=A.shape[0])
col
# array([2, 2, 0, 1, 1])
基于col
,我想从第0行和第1行获取元素2,从第2行获取元素0,从第3行和第4行获取1:[3, 9, 3, 7, 8]
。
正常索引不起作用:
A[col]
# array([[3, 5, 2],
# [3, 5, 2],
# [5, 0, 3],
# [3, 7, 9],
# [3, 7, 9]])
A[:, col]
# array([[3, 3, 5, 0, 0],
# [9, 9, 3, 7, 7],
# [2, 2, 3, 5, 5],
# [6, 6, 4, 7, 7],
# [1, 1, 8, 8, 8]])
答案 0 :(得分:0)
这适用于大型数组但速度很慢:
A[:, col].diagonal()
# array([3, 9, 3, 7, 8])