Numpy ndarray赋值优化:更高效的append替代实现方案咨询
Numpy ndarray赋值优化
针对你给出的代码,完全可以简化写法,避免手动逐个提取元素的繁琐操作,同时提升效率:
原代码问题分析
原代码先初始化一个3行0列的空数组a,再手动构造[[b[0]],[b[1]],[b[2]]]来做append操作,不仅写法冗余,而且numpy的append本质是创建新数组(原数组固定大小无法直接扩展),初始化空数组再拼接属于多余步骤。
优化方案1:直接构造目标数组(推荐)
既然最终要得到列向量形式的数组,直接对b做维度转换即可,一步到位:
import numpy as np b = np.array([1,2,3]) a = b.reshape(-1, 1) # 或者 a = b[:, np.newaxis]
执行结果:
array([[1], [2], [3]])
reshape(-1,1)表示自动计算行数(这里是3),列数设为1;b[:, np.newaxis]则是通过添加新轴把一维数组转为二维列向量,两种方式效果一致。
优化方案2:如果一定要用append(不推荐)
如果你坚持要保留append的写法,可以先把b转为列数组,避免手动拆元素:
import numpy as np a = np.array([[],[],[]]) b = np.array([1,2,3]) a = np.append(a, b[:, np.newaxis], axis=1)
这种写法省去了手动构造[[b[0]],[b[1]],[b[2]]]的麻烦,但还是不如直接构造目标数组高效。
内容的提问来源于stack exchange,提问作者zangmolk
相关产品推荐
相关产品推荐

