我使用numpy和列表构造函数创建了几个数组,我无法弄清楚为什么这是失败的。我的代码是:当使用数组构造函数时NumPy MemoryError
import numpy as np
A = np.ndarray([i for i in range(10)]) # works fine
B = np.ndarray([i**2 for i in range(10)]) # fails, with MemoryError
我也尝试了B = [i**2 for i in range(10)]
其作品,但我需要它是一个ndarray。我不明白为什么普通的构造函数会工作,但调用函数不会。据我了解,ndarray构造函数甚至不应该看到它的内部,它应该得到一个长度为10的列表,其中包含ints。
使用'np.array([...])''。 'np.ndarray'是一个具有不同参数的高级构造函数。 'np.array'是我们通常使用的。 – hpaulj
如果尝试使用维度列表创建数组,请使用'np.zeros'(或'ones'或'empty')。 – hpaulj
正如@hpaulj所说,通常你应该使用'np.array()'从列表中创建一个新的数组。 “ndarray”的第一个参数是数组的*形状*,而不是放入数组中的数据。所以你要求一个形状为'[0,1,4,9,16,25,36,49,64,81]'的数组。有趣的是它产生了一个'MemoryError'。在那里0,数组的总大小实际上是0. –