首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >numpy数组内存分配

numpy数组内存分配
EN

Stack Overflow用户
提问于 2013-06-29 02:08:43
回答 2查看 4.5K关注 0票数 4

根据我所读到的关于Numpy数组的内容,它们比标准Python列表更高效。让我困惑的是,当你创建一个numpy数组时,你必须传入一个python列表。我假设这个python列表被解构了,但是在我看来,如果你必须创建一个更大的低效结构来创建一个高效的结构,那么它似乎就违背了拥有一个内存高效的数据结构的目的。

numpy.zeros可以解决这个问题吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-06-29 02:15:06

这里有many ways to create a NumPy array。将Python list传递给np.arraynp.asarray就是这样一种方式。

另一种方法是使用迭代器:

代码语言:javascript
复制
In [11]: np.fromiter(xrange(10), count=10, dtype='float')
Out[11]: array([ 0.,  1.,  2.,  3.,  4.,  5.,  6.,  7.,  8.,  9.])

在这种情况下,没有涉及到很大的临时Python列表。因此,您可以定义一个generator function来生成列表中的项,而不是构建Python列表。然后,要创建数组,您需要将生成器传递给np.fromiter。因为np.fromiter总是创建一维数组,所以在返回值上使用reshape来创建更高维数的数组。

还有np.fromfunctionnp.frombuffernp.fromfilenp.loadtxtnp.genfromtxtnp.fromstringnp.zerosnp.emptynp.ones。这些都提供了在不创建大型临时NumPy对象的情况下创建Python数组的方法。

票数 8
EN

Stack Overflow用户

发布于 2013-06-29 02:10:56

通常,如果预先分配大小,Numpy的效率会更高。如果您知道要填充一个MxN matrix...create,那么首先填充它,然后再填充,而不是使用appends。

虽然确实需要创建列表,但效率的大量提高来自于对该结构的操作。读/写/计算/等等。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17371059

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档