如何从1000×1000的NumPy数组中按指定索引选取行列
NumPy数组指定行列选取方案
步骤1:生成合并后的行/列索引
利用NumPy的np.r_工具可以快速合并连续切片与单个索引,生成符合要求的索引数组:
处理行索引:
import numpy as np # 原数组定义 a = np.array([list(range(1,1001))]*1000) # 合并指定行索引:0-1行、4-6行、第101行、156-988行 row_indices = np.r_[0:2, 4:7, 101, 156:989]处理列索引:
# 合并指定列索引:0-2列、400-588列、第678列、701-998列 col_indices = np.r_[0:3, 400:589, 678, 701:999]
步骤2:选取目标子数组
使用np.ix_将行、列索引转换为二维网格索引,确保正确选取行与列的笛卡尔积(得到二维子数组):
new_array = a[np.ix_(row_indices, col_indices)]
关键说明
- 切片规则:NumPy中
start:end为左闭右开区间,例如0:2实际包含索引0、1,156:989包含156到988的索引 np.r_的作用是将多个切片、单个索引拼接成一维索引数组np.ix_用于避免索引广播错误,确保最终得到的是行与列组合的二维子数组,而非一维配对索引结果
内容的提问来源于stack exchange,提问作者user16563284
相关产品推荐
相关产品推荐

