numpy数组中+=操作符的等价物
我经常做以下操作:
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])