咨询:如何从二维数组中提取特定列生成新数组
嘿,这个需求挺典型的,我给你几种Python下的实现方式,按需选择就行:
方法1:列表推导式(最简洁直观)
这是Python里处理这类需求最常用的写法,一行代码就能搞定:
original_arr = [[1,2,3,4],[5,6,7,8],[9,10,11,12],[13,14,15,16]] new_arr = [[row[0], row[2]] for row in original_arr] print(new_arr) # 输出结果:[[1,3],[5,7],[9,11],[13,15]]
简单解释下:遍历原数组的每一行row,直接取出该行索引为0(第一列)和2(第三列)的元素,组合成新的子列表,最终拼接成目标数组。
方法2:普通循环遍历(适合新手理解过程)
如果想一步步看清构建新数组的逻辑,可以用基础的for循环:
original_arr = [[1,2,3,4],[5,6,7,8],[9,10,11,12],[13,14,15,16]] new_arr = [] for row in original_arr: # 提取当前行需要的两列元素,生成新行 new_row = [row[0], row[2]] # 将新行加入结果数组 new_arr.append(new_row) print(new_arr)
这种写法逻辑清晰,每一步操作都一目了然,适合刚接触二维数组的朋友上手理解。
方法3:numpy库实现(适合处理大型数组)
如果你需要处理大规模的多维数据,用numpy会更高效:
import numpy as np original_arr = np.array([[1,2,3,4],[5,6,7,8],[9,10,11,12],[13,14,15,16]]) # 语法说明:[:, [0,2]] 表示取所有行,以及索引为0和2的列 new_arr = original_arr[:, [0, 2]].tolist() print(new_arr)
numpy的切片语法在处理多维数组时非常灵活,而且运算性能远高于原生列表,适合数据量较大的场景。
内容的提问来源于stack exchange,提问作者Pengyu Chen
相关产品推荐
相关产品推荐

