【问题标题】:Parsing a very large array with list comprehension is slow使用列表理解解析非常大的数组很慢
【发布时间】:2022-06-10 17:41:26
【问题描述】:

我有一个超大的numpy.float64 格式的数值列表,如果有inf 值,我想将每个值转换为0.0,并将其余元素解析为简单的浮点数。

这是我的代码,完美运行:

# Values in numpy.float64 format.
original_values = [np.float64("Inf"), np.float64(0.02345), np.float64(0.2334)]

# Convert them
parsed_values = [0.0 if x == float("inf") else float(x) for x in original_values]

但这很慢。有什么方法可以加快这段代码的速度吗?对map 或numpy 使用任何魔法(我对这些库没有经验)?

【问题讨论】:

  • 有什么理由不使用 numpy 数组?
  • 这能回答你的问题吗? Replace -inf with zero value
  • 你为什么使用list 的numpy.float64 对象???那真的是你所拥有的吗?请提供minimal reproducible example。 type(original_values) 是什么?
  • 几乎可以肯定,你在某个时候有一个numpy.ndarray 对象,你真的应该只是使用它。如果最后你需要 list 传递给 mongo,只需使用 my_array.tolist()
  • 您发布的original_list 不是numpy.float64 对象列表

标签: python arrays numpy dictionary list-comprehension


【解决方案1】:
parsed_values[~np.isfinite(parsed_values)] = 0.0
parsed_values = parsed_values.astype(np.float32)

【讨论】:

  • 您能否详细说明答案?我不能让它工作。谢谢!
猜你喜欢
  • 2016-08-12
  • 1970-01-01
  • 2022-06-13
  • 1970-01-01
  • 2011-12-18
  • 2013-09-03
  • 1970-01-01
  • 2015-08-26
  • 1970-01-01
相关资源
最近更新 更多