如何在NumPy灵活类型数组中计算x、y、z列的列和
解决NumPy结构化数组的x、y、z列求和问题
嘿,这个需求用NumPy的结构化数组特性就能轻松搞定,我给你一步步拆解:
首先先确认你定义的结构化数组(记得先导入NumPy哦):
import numpy as np M = np.array([(0,1.1,2.1,3.1),(1,4,5,6),(2,10,11,12)], dtype=[('N','i4'),('x','f8'),('y','f8'),('z','f8')])
核心实现代码
要快速获取x、y、z各列的求和向量,直接用字段索引结合sum()方法就行:
sum_vector = M[['x', 'y', 'z']].sum(axis=0) print(sum_vector)
输出结果
array([15.1, 18.1, 21.1])
简单解释
M[['x', 'y', 'z']]:从结构化数组里精准提取出包含x、y、z三个坐标字段的子数组.sum(axis=0):沿着行方向(也就是对每一列)求和,最终得到三个字段的总和组成的一维向量
如果想要保留结构化数组的格式(而非普通NumPy数组),也可以这么写:
sum_struct = np.array( [(M['x'].sum(), M['y'].sum(), M['z'].sum())], dtype=[('x_sum','f8'),('y_sum','f8'),('z_sum','f8')] ) print(sum_struct)
对应的输出会是:
array([(15.1, 18.1, 21.1)], dtype=[('x_sum', '<f8'), ('y_sum', '<f8'), ('z_sum', '<f8')])
内容的提问来源于stack exchange,提问作者Miguel
相关产品推荐
相关产品推荐

