如何为numpy二维数组新增角度列:对每行x、y列应用双输入函数
Numpy二维数组追加自定义计算列实现方法
以下实现基于你已经完成自定义角度计算函数的前提,你可以直接替换示例中的函数为你自己的实现。
方案1:自定义函数支持向量化运算(性能最优,推荐)
如果你的角度计算函数可以直接接收numpy数组作为输入参数,直接按列提取数据计算即可:
import numpy as np # 替换为你自己的角度计算函数 def calc_angle(x, y): # 此处为示例逻辑:计算极坐标角度并转换为角度制 return np.degrees(np.arctan2(y, x)) # 你的原始数组,修正了原写法的语法错误 a = np.array([[12032, 12, 23, 12],[12032, 22, 12, 12]]) # 提取所有行的x坐标(索引1)、y坐标(索引2)列 x_col = a[:, 1] y_col = a[:, 2] # 批量计算角度 angle_col = calc_angle(x_col, y_col) # 将角度列转为二维列向量后,拼接至原数组末尾 result = np.hstack([a, angle_col.reshape(-1, 1)])
方案2:自定义函数仅支持单值输入
如果你的角度计算函数只能接收单个数值作为参数,无法直接传入数组批量计算,使用apply_along_axis逐行处理即可:
import numpy as np # 替换为你自己的角度计算函数 def calc_angle(x, y): # 示例仅支持单值输入的函数逻辑 return np.degrees(np.arctan2(y, x)) a = np.array([[12032, 12, 23, 12],[12032, 22, 12, 12]]) # 逐行提取x、y坐标传入函数计算,得到角度列 angle_col = np.apply_along_axis(lambda row: calc_angle(row[1], row[2]), axis=1, arr=a) # 拼接新列 result = np.hstack([a, angle_col.reshape(-1, 1)])
执行完成后,result数组的最后一列即为对应的角度计算结果。
内容的提问来源于stack exchange,提问作者Asbjoern Lund
相关产品推荐
相关产品推荐

