n =等于+ =运算符的numpy数组

时间:2014-07-15 15:05:37

标签: python 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 :(得分: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])

答案 1 :(得分:0)

要获取相同的数组A,请执行:

A = numpy.arange(5)

数组通常不是动态调整大小的,但您可以使用numpy.concatenate