Numpy的vstack是否创建了一个新的数组,即它所组合的数组的副本?

2024-05-08 23:52:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在写一些函数,它们沿着目录树向下走,在那里按名称对文件进行排序,并将它们编码+在一个表中的更多信息。在

我将这个表定义为Numpy vstack数组。 一开始,向数组中添加条目的速度非常快,但是当它达到大约20000个条目时,速度会慢很多。如此之多,以至于要达到大约9万排人口的目标大约需要10分钟

我非常怀疑vstack是罪魁祸首,因为它可能复制了整个表+我附加到它的行。 官方的Numpy文档说vstacking只不过是“连接”。。。但这不能回答我的问题。在

因此,是np.vstack公司()看看它将要粘在一起的数组的大小,然后将所需内存进行mallocate,然后复制我们正在堆叠的数组的内容?在

更新: 就统计数据而言,女士们先生们,使用列表可以使执行时间达到0.5s,这是20倍多的速度,实际上它甚至比这个还要短,因为我的度量包含了一些额外的操作。在


Tags: 文件函数目的numpy目录名称信息编码
1条回答
网友
1楼 · 发布于 2024-05-08 23:52:20

你说得对,np.vstack复制了整个数组。在

您可以做一个小的python体验来确认它:

a = np.array([[1,2,3]])
b = np.array([[4,5,6]])
res = np.vstack((a,b))
res
array([[1, 2, 3],
       [4, 5, 6]])

然后,如果修改数组a并打印res,您可以看到{}是 未修改

^{pr2}$

相关问题 更多 >