a = np.array(list(range(16).reshape((4,4))
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11],
[12, 13, 14, 15]])
假设我想要中间的方块。可能会这样做:
a[[1,2],[1,2]]
但是我得到了这个:
array([5, 10])
这个方法可以正常运行,但看起来不够优雅:
a[[1,2],:][:,[1,2]]
array([[5, 6],
[9, 10]])
所以我的问题是:
- 为什么是这样的?实现该方式所需的前提条件是什么?
- 是否有一种规范的方法可以同时沿多个索引选择?
x [[1,2],[1,2]]
选择对角线,即点(1,1)和(2,2)。x [[ [1],[2]],[1,2]]
选择块。在MATLAB中,索引块更简单,但“对角线”更棘手。 - hpaulj