首页 > 解决方案 > python,如何从矩阵的每一列中选择元素

问题描述

我需要根据索引向量从矩阵的每一列中提取一个元素。说:

index = [0,1,1]
matrix = [[1,4,7],[2,5,8],[3,6,9]]

索引向量告诉我我需要第 1 列的第一个元素、第 2 列的第二个元素和第 3 列的第三个元素。

输出应该是[1,5,8]. 如何在没有显式循环的情况下将其写出来?

谢谢

标签: pythonarraysnumpyindexing

解决方案


您可以使用高级索引

index = np.array([0,1,2])
matrix = np.array([[1,4,7],[2,5,8],[3,6,9]])

res = matrix[np.arange(matrix.shape[0]), index]
# array([1, 5, 9])

对于您的第二个示例,反转您的索引:

index = np.array([0,1,1])
matrix = np.array([[1,4,7],[2,5,8],[3,6,9]])

res = matrix[index, np.arange(matrix.shape[1])]
# array([1, 5, 8])

推荐阅读