我使用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. –