我使用的数据对象是不同形状的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数组的代码。
答案 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
或者,如果您想将d1
和d2
保留为常规列表,可以使用numpy.asarray
:
d1_ = numpy.asarray(d1)
d2_ = numpy.asarray(d2)
d3 = d1_ + 2 * d2_