Numpy数组推导式

5
有没有一种在Python中使用numpy数组推导的方法?我看到的唯一方法是使用列表推导,然后将结果转换为numpy数组,如 np.array(list comprehension)。我本来希望能够直接使用numpy数组来完成它,而不需要使用列表作为中间步骤。
此外,是否有可能重载列表运算符,例如[],以便结果是一个numpy数组而不是一个列表?

3
能否重载列表操作符,即 [ 和 ],使结果为NumPy数组而不是列表?听起来像是一个非常糟糕的想法。 - Chris_Rands
不确定“数组推导”甚至包含什么。您想从中获得什么功能? - Daniel F
1
Python列表是Python语言定义的一部分,而Numpy数组则不是;它们是第三方库的一部分,Python语言对此毫不知情(遗憾的是,Python最初并没有考虑科学计算,尽管在某些领域中变得流行和有用)。 - Iguananaut
问题是:你为什么想这样做? - mrzo
2个回答

7

您可以从生成器表达式中创建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)

0
一个基本的问题是NumPy数组是静态大小而Python列表是动态的。由于列表推导式不知道返回的列表长度,因此需要在生成过程中维护动态列表。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接