Numpy多维数组如何通过列表索引单次切片提取指定行列子矩阵
问题解答
你要实现单次索引完成对应行、列的选取,直接用NumPy内置的np.ix_函数即可,具体操作如下:
首先是你给出的初始代码:
import numpy as np a = np.arange(25).reshape(5, -1) idx = [1, 3]
单次索引的写法:
res = a[np.ix_(idx, idx)]
输出结果和两次切片的结果完全一致:
array([[ 6, 8], [16, 18]])
补充说明:
np.ix_的作用是将输入的一维索引序列转换为可广播的索引网格,第一个入参对应行维度的索引,第二个入参对应列维度的索引,不需要生成中间切片结果,性能优于两次切片的写法。- 如果你不想调用
np.ix_,也可以手动对行索引做维度扩展实现同等效果,写法为a[np.array(idx)[:, np.newaxis], idx],本质和np.ix_的实现逻辑一致。
内容的提问来源于stack exchange,提问作者user2247969
相关产品推荐
相关产品推荐

