【问题标题】:Numpy For Large Data Sets [closed]大型数据集的 Numpy [关闭]
【发布时间】:2019-05-27 16:23:39
【问题描述】:

为了生成某些情况的概率密度函数,可能会考虑 100 万个观测值。当我使用 numpy 数组时,遇到了大小限制 32。

是不是太少了?

在这种情况下,我们如何存储超过 32 个元素而不将元素分布到不同的列中,或者数组中的数组?

import numpy
my_list = []
for i in range(0, 100):
    my_list.append(i)

np_arr = numpy.ndarray(np_arr) # ValueError: sequence too large; cannot be greater than 32

【问题讨论】:

  • 我不知道你在问什么。这里的“元素”是什么?
  • 我对这个问题的任何解释都表明不存在这样的限制
  • 您收到错误消息了吗?你的代码在哪里?
  • 你是如何创建数组的? Numpy 数组大小的唯一限制是您的硬件资源。 1M 元素应该没有问题。 np.zeros(1e6) 将创建一个包含一百万个零的数组。试一试。
  • 我现在添加了一个代码

标签: python numpy


【解决方案1】:

当您使用numpy.ndarray 创建数组时,第一个参数是数组的形状。将该列表解释为一个形状确实会给出一个巨大的数组。如果你只是想把列表变成一个数组,你想要numpy.array

import numpy
my_list = []
for i in range(0, 100):
    my_list.append(i)

np_arr = numpy.array(my_list)

【讨论】:

  • 您不需要创建列表...只需使用arange; np_arr = numpy.arange(100)(对于 int32)或 np_arr = numpy.arange(100.0)(对于 float64)。
  • @kcw78 我相信 OP 的错误即将出现,因为他们使用错误的函数将列表转换为数组。我的回答旨在展示进行这种转换的正确方法。
  • 好点。目前尚不清楚为什么 OP 使用列表来创建数组。如果他确实需要转换列表,那么他应该按照您的步骤操作。如果他只需要一个 [0, 1, 2, 3, 4 ...100] 的数组,他可以使用 arange()。将留给 OP 来解决。
  • 我假设“真实”代码有一个更复杂的列表,而range 只是创建minimal reproducible example 的一种方便方式。当然,我可能完全错了!
猜你喜欢
  • 2018-03-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-11
  • 2017-10-27
  • 2017-08-18
  • 2018-01-17
  • 2021-09-03
相关资源
最近更新 更多