numpy数组中+=操作符的等价物

3 投票
2 回答
1782 浏览
提问于 2025-04-18 13:25

我经常做以下操作:

import numpy as np

def my_generator_fun():
    yield x # some magically generated x

A = []
for x in my_generator_fun():
    A += [x]
A = np.array(A)

有没有更好的方法可以直接在一个numpy数组上操作,而不需要先创建一个普通的python列表呢?

需要注意的是,+=这个操作符可以让一个空的、没有维度的数组扩展成任意维度的数组,而np.append和np.concatenate则要求数组的维度必须相同。

2 个回答

0

要得到相同的数组A,可以这样做:

A = numpy.arange(5)

一般来说,数组并不是为了动态调整大小而设计的,但你可以使用numpy.concatenate这个方法。

4

使用 np.fromiter

def f(n):
    for j in range(n):
        yield j

>>> np.fromiter(f(5), dtype=np.intp)
array([0, 1, 2, 3, 4])

如果你事先知道这个迭代器会返回多少个项目,你可以通过使用 count 这个参数来加快速度:

>>> np.fromiter(f(5), dtype=np.intp, count=5)
array([0, 1, 2, 3, 4])

撰写回答