簡體   English   中英

使用數組構造函數時出現NumPy MemoryError

[英]NumPy MemoryError when using array constructors

我正在使用numpy和list構造函數創建幾個數組,但我不知道為什么會失敗。 我的代碼是:

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的列表,其中包含兩個整數。

http://docs.scipy.org/doc/numpy/reference/generation/numpy.ndarray.html是我們通常不使用的低級方法。 它的第一個參數是shape

In [98]: np.ndarray([x for x in range(3)])
Out[98]: array([], shape=(0, 1, 2), dtype=float64)
In [99]: np.ndarray([x**2 for x in range(3)])
Out[99]: array([], shape=(0, 1, 4), dtype=float64)

通常使用zerosones構建給定形狀的坯件陣列:

In [100]: np.zeros([x**2 for x in range(3)])
Out[100]: array([], shape=(0, 1, 4), dtype=float64)

如果要將列表轉換為數組,請使用np.array

In [101]: np.array([x for x in range(3)])
Out[101]: array([0, 1, 2])
In [102]: np.array([x**2 for x in range(3)])
Out[102]: array([0, 1, 4])

您可以生成范圍號,然后在整個數組上執行數學運算(無需迭代):

In [103]: np.arange(3)**2
Out[103]: array([0, 1, 4])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM