【问题标题】:Numpy array comprehension [duplicate]Numpy数组理解[重复]
【发布时间】:2020-04-03 12:24:38
【问题描述】:

有没有办法在 Python 中进行 numpy 数组理解?我看到的唯一方法是使用列表理解,然后将结果转换为 numpy 数组,例如np.array(list comprehension)。我本来希望有一种方法可以直接使用 numpy 数组来完成,而无需使用列表作为中间步骤。

另外,是否可以重载列表运算符,即[],以便结果是一个 numpy 数组,而不是一个列表。

【问题讨论】:

  • "是否可以重载列表运算符,即 [ 和 ],这样结果是一个 numpy 数组,而不是一个列表。"-- 听起来是个很糟糕的主意
  • 不确定“数组理解”甚至需要什么。你想从中得到什么功能?
  • Python 列表是 Python 语言定义的一部分,Numpy 数组不是;它们是 Python 语言不知道的第三方库的一部分(唉,Python 最初设计时从未考虑到科学计算,尽管它在某些领域已经变得流行和有用)。
  • 问题是:你为什么要这么做?

标签: python numpy list-comprehension


【解决方案1】:

您可以从生成器表达式创建 numpy 数组。您只需提前指定 dtype:

import numpy as np
x = np.fromiter(range(5), dtype=int)
y = np.fromiter((i**2 for i in range(5)), dtype=int)

【讨论】:

    【解决方案2】:

    这里的一个基本问题是 numpy 数组是静态大小的,而 python 列表是动态的。由于列表推导不知道返回的列表将是多长时间,因此必然需要在整个生成过程中维护一个动态列表。

    【讨论】:

      猜你喜欢
      • 2015-08-13
      • 2016-07-31
      • 2018-09-07
      • 2019-11-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多