np.concate 比较慢
pd.concat([])也比较慢
还有
慢 ref = np.array([ref_list]*20000000)
快 ref = np.zeros((20000000,10))
ref[:,:] = [1, 1, 0, 1, 1, 0, 1, 1, 0, 1]
最佳解决方案
上面对Numpy的使用观念可能有误。 NumPy数组存储在连续的内存块中,如果要将行或列添加到现有数组中,则需要将整个数组复制到一个新的内存块,从而为要存储的新元素创建间隙。如果重复建立一个数组,这是非常低效的。
在添加行的情况下,最好的办法是创建一个与您的数据集最终大小一样的数组,然后向其中按行添加数据:
>>> import numpy
>>> a = numpy.zeros(shape=(5,2))
>>> a
array([[ 0., 0.],
[ 0., 0.],
[ 0., 0.],
[ 0., 0.],
[ 0., 0.]])
>>> a[0] = [1,2]
>>> a[1] = [2,3]
>>> a
array([[ 1., 2.],
[ 2., 3.],
[ 0., 0.],
[ 0., 0.],
[ 0., 0.]])
本文探讨了在Python中使用NumPy数组时常见的性能瓶颈,特别是关于数组拼接和初始化的效率问题。通过对比np.concatenate和pd.concat的性能,文章提出了一种更高效的数组初始化策略,即预先创建一个固定大小的数组,再逐行填充数据,以此避免频繁的数组复制,显著提升程序运行速度。

420

被折叠的 条评论
为什么被折叠?



