根据我所了解的Numpy数组,它们比标准Python列表更加内存高效。但是令我困惑的是,当你创建一个numpy数组时,你必须传入一个Python列表。我猜测这个Python列表会被拆分,但是对我来说,似乎这样做有些抵消了使用内存高效的数据结构的目的,因为你需要创建一个更大的低效数据结构来创建高效的数据结构。
那么numpy.zeros是否可以解决这个问题?
有很多种方法可以创建NumPy数组。将Python列表传递给np.array
或np.asarray
仅是其中一种方法。
另一种方法是使用迭代器:
In [11]: np.fromiter(xrange(10), count=10, dtype='float')
Out[11]: array([ 0., 1., 2., 3., 4., 5., 6., 7., 8., 9.])
np.fromiter
来创建数组。由于np.fromiter
始终创建1D数组,因此要创建更高维度的数组,请对返回值使用reshape
。np.fromfunction
、np.frombuffer
、np.fromfile
、np.loadtxt
、np.genfromtxt
、np.fromstring
、np.zeros
、np.empty
和np.ones
。它们都提供了一种创建NumPy数组的方法,而不创建大型临时Python对象。