首页 > 解决方案 > Numpy 使用特定的行和列来形成一个新的矩阵

问题描述

import numpy as np

a = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
i = np.array([True, False, True])
j = np.array([True, True, False])
print(a[i, j])
print(a[i, :][:, j])

第一张印刷品:

[1 8]

第二个打印:

[[1 2]
 [7 8]]

我想要的是第二个。还有比这更好的方法a[i, :][:, j]吗?

我觉得这不是正确的方法。

标签: pythonnumpy

解决方案


指数需要重塑。请参阅纯整数数组索引中的第二个示例

# Either q[i[:, np.newaxis], j] or a[np.ix_(i, j)]
# or a[i[:, None], j]
print(a[np.ix_(i, j)])

推荐阅读