gpt4 book ai didi

python - numpy 数组大小与连接速度

转载 作者:太空狗 更新时间:2023-10-30 00:35:23 24 4
gpt4 key购买 nike

我像这样将数据连接到一个 numpy 数组:

xdata_test = np.concatenate((xdata_test,additional_X))

这已经做了一千次了。数组的数据类型为 float32,其大小如下所示:

xdata_test.shape   :  (x1,40,24,24)        (x1 : [500~10500])   
additional_X.shape : (x2,40,24,24) (x2 : [0 ~ 500])

问题是,当 x1 大于 ~2000-3000 时,连接需要更长的时间。

下图绘制了连接时间与 x2 维度大小的关系:

x2 vs time consumption

这是内存问题还是 numpy 的基本特性?

最佳答案

据我了解 numpy,所有的 stackconcatenate 函数都不是非常有效。并且有充分的理由,因为 numpy 试图保持数组内存连续以提高效率(参见 this link about contiguous arrays in numpy )

这意味着每次连接操作都必须每次都复制整个数据。当我需要将一堆元素连接在一起时,我倾向于这样做:

l = []
for additional_X in ...:
l.append(addiional_X)
xdata_test = np.concatenate(l)

这样,移动整个数据的昂贵操作只需执行一次。

注意:会对给您带来的速度提升感兴趣。

关于python - numpy 数组大小与连接速度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34747346/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com