如何对子矩阵使用 np.ix_

how to use np.ix_ for submatrices

我有一个 numpy 形状的 3D 数组 (4, 13, 13),其中 4 行中的每一行都是 13x13 的子矩阵。

如何使用 np.ix_ 对所有行的子数组进行索引?

a = np.zeros((4,13,13))
to_select = np.ix_([0,2], [0,2])
a[:, to_select] # returns the error below
a[to_select] # works without error, but is not accessing what I want

返回的错误是“IndexError: only integers, slices (:), ellipsis (...), numpy.newaxis (None) and integer or boolean arrays是有效索引

有没有办法将 to_select 用于子维度,或者我是否需要变通?

谢谢!

np._ix returns 每个轴的数组元组而不是 int/bool 数组作为索引,因此它们不能与其他切片方法结合使用。这是一个解决方法,包括 to_select:

中的所有剩余轴
a = np.zeros((4,13,13))
to_select = np.ix_(range(a.shape[0]), [0,2], [0,2])
print(a[to_select])

输出:

[[[0. 0.]
[0. 0.]]

[[0. 0.]
[0. 0.]]

[[0. 0.]
[0. 0.]]

[[0. 0.]
[0. 0.]]]