将numpy数组列表视为numpy对象

时间:2017-01-02 14:12:33

标签: python arrays numpy

我使用的数据对象是不同形状的numpy数组列表。我想将数据对象视为一个numpy对象,这样我就可以添加,减去和缩放这些对象,就像它们是纯粹的numpy数组一样:

# Defining the data objects:
d1 = [numpy.random.rand(n**2).reshape(n, n) for n in range(1, 5)]
d2 = [numpy.random.rand(n**2).reshape(n, n) for n in range(1, 5)]

# The operation I want to perform:
d3 = [a1 + 2*a2 for a1, a2 in zip(d1, d2)]

# What I really would like to write:
d3 = d1 + 2*d2   # (not valid for lists of arrays)

定义对象d1和d2的最简单方法是什么,以便我可以使用最后一行?

我问的原因是因为我想重用一些假设d1和d2是可以添加和缩放的简单numpy数组的代码。

1 个答案:

答案 0 :(得分:1)

只需将它们定义为numpy.array即可:

d1 = numpy.array([numpy.random.rand(n**2).reshape(n, n) for n in range(1, 5)])
d2 = numpy.array([numpy.random.rand(n**2).reshape(n, n) for n in range(1, 5)])
d3 = d1 + 2 * d2

或者,如果您想将d1d2保留为常规列表,可以使用numpy.asarray

d1_ = numpy.asarray(d1)
d2_ = numpy.asarray(d2)
d3 = d1_ + 2 * d2_