我刚刚在NumPy中学习索引,我看到了NumPy数组的这些奇怪的索引问题。例如,当我试图索引这个简单的1_D数组时;
import numpy as np
arr = np.ndarray([5, 4, 10, 20, 25, 81, 9, 7])
print(arr[2])
字符串
我得到以下奇怪的输出
[[[[[[[0. 0. 0. ... 0. 0. 0.]
[0. 0. 0. ... 0. 0. 0.]
[0. 0. 0. ... 0. 0. 0.]
...
[0. 0. 0. ... 0. 0. 0.]
[0. 0. 0. ... 0. 0. 0.]
[0. 0. 0. ... 0. 0. 0.]]
[[0. 0. 0. ... 0. 0. 0.]
[0. 0. 0. ... 0. 0. 0.]
[0. 0. 0. ... 0. 0. 0.]
型
无数的零矩阵。而当我索引一个稍大的数组时,它给我带来了这个问题;
numpy.core._exceptions._ArrayMemoryError: Unable to allocate 229. PiB for an array with shape (5, 4, 10, 20, 25, 81, 9, 7, 914, 23, 5, 7, 86) and data type float64
型
为什么NumPy的行为如此奇怪,仅仅是一个简单的1_D数组就消耗了这么多内存,并且无法正确执行索引?对于IDE,我使用IntelliJ和Conda venv。
1条答案
按热度按时间gwbalxhn1#
您正在使用
np.ndarray
,而您可能打算使用np.array
。你在这里做的是创建一个
5 * 4 * 10 * 20 * 25 * 81 * 9 * 7
元素的8维数组。