Pythonic/Numpy方式将一维数组转为带索引二维向量数组的优化方法
更简洁的一维数组转带索引二维数组的Numpy技巧
你现在的实现确实能得到预期结果,但Numpy里有不少更直观简洁的方法可以做到这件事,我给你列几个常用的:
方法1:用np.column_stack()(最直观)
这个函数专门用来把多个一维数组按列堆叠成二维数组,直接把索引数组和原数据传进去就行,完全不用手动reshape和转置:
import numpy as np data = [0.2, 0.6, 0.3, 0.5] indices = np.arange(len(data)) vecs = np.column_stack((indices, data))
运行后得到的结果和你原来的完全一致:
array([[0. , 0.2], [1. , 0.6], [2. , 0.3], [3. , 0.5]])
方法2:用Numpy的c_索引器(语法糖,更简洁)
np.c_是Numpy提供的一个便捷索引器,专门用于按列拼接数组,写法非常紧凑,一行就能搞定:
import numpy as np data = [0.2, 0.6, 0.3, 0.5] vecs = np.c_[np.arange(len(data)), data]
效果和上面的方法完全一样,代码看起来更清爽。
方法3:用np.stack()指定轴(扩展性更强)
如果想更灵活控制堆叠方向,可以用np.stack(),指定axis=1来按列堆叠:
import numpy as np data = [0.2, 0.6, 0.3, 0.5] vecs = np.stack((np.arange(len(data)), data), axis=1)
这个方法的好处是如果之后需要按行堆叠,只需要把axis改成0就行,扩展性更强。
对比你原来的代码,这些方法都省去了手动reshape和transpose的步骤,逻辑更直白,一看就知道是在做数组拼接,可读性和简洁性都提升了不少。
内容的提问来源于stack exchange,提问作者Konchog
相关产品推荐
相关产品推荐

