如何不使用循环按索引组合多个numpy数组生成指定结构数组?
解决方案
可以直接用Numpy的矢量化操作实现,完全避免循环,适配大数据场景,以下是两种常用方法:
方法1:列堆叠后展平
通过np.column_stack将三个数组按列组合成二维数组,再用ravel()展平为一维数组:
import numpy as np np_1 = np.asarray([1,1,1]) np_2 = np.asarray([2,2,2]) np_3 = np.asarray([3,3,3]) result = np.column_stack((np_1, np_2, np_3)).ravel() # 输出:array([1, 2, 3, 1, 2, 3, 1, 2, 3])
方法2:垂直堆叠转置后展平
先通过np.vstack垂直堆叠三个数组,转置后展平:
result = np.vstack((np_1, np_2, np_3)).T.ravel()
原理说明
这两种方法都是Numpy原生的矢量化操作,底层基于C实现,执行效率远高于Python层面的循环,完全满足大数据场景的性能需求,无需借助其他工具。
内容的提问来源于stack exchange,提问作者fishbowl1
相关产品推荐
相关产品推荐

