NumPy中奇怪的索引问题消耗太多内存

omjgkv6w  于 2023-08-05  发布在  其他
关注(0)|答案(1)|浏览(85)

我刚刚在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。

gwbalxhn

gwbalxhn1#

您正在使用np.ndarray,而您可能打算使用np.array
你在这里做的是创建一个5 * 4 * 10 * 20 * 25 * 81 * 9 * 7元素的8维数组。

相关问题