如何将动态生成的值附加到NumPy数组中?

时间:2016-06-02 13:13:30

标签: python arrays numpy

我想在结果数组中添加一些动态计算的值:

out = []
for item in foo:
    spam = get_spam(foo)
    out.append(spam)
return np.array(out) 

不幸的是,这不起作用,因为垃圾邮件形状是(10,1)而 out 数组有一个额外的维度 - 这很糟糕。

我做了类似的事情:

for index, item in enumerate(foo):
    spam = get_spam(foo)
    if index == 0:
        out = spam
    else:
        out = np.append(out, spam, 1)
return out

但这个解决方案并不简短,易读且易读。

这怎么用pythonic方式?

2 个答案:

答案 0 :(得分:3)

您可以使用numpy concatenate函数:

np.concatenate([get_spam(foo) for item in foo])

它最终接受一个参数 axes 作为连接方向(垂直/水平)。

答案 1 :(得分:1)

如果垃圾邮件始终具有形状(10,1),则可以使用[:,0]

对返回的数组进行切片
for item in foo:
    spam = get_spam(foo)
    out.append(spam[:,0])
return np.array(out)