我有两个形状为x
的numpy数组(m, 2)
和形状为y
的{{1}}。我想计算(n, 2)
数组,其中在位置(m, n, 2)
处找到(i, j)
处的x[i]
和y[j]
。列表理解作品
out[i, j]
但是我想知道是否有通过import numpy
x = numpy.random.rand(13, 2)
y = numpy.random.rand(5, 2)
xy = numpy.array([
[xx + yy for yy in y]
for xx in x
])
或类似方法的更有效的解决方案。
答案 0 :(得分:3)
您可以使用numpys广播规则将第一个数组转换为形状(13, 1, 2)
,将第二个数组转换为形状(1, 5, 2)
:
numpy.all(x[:, None, :] + y[None, :, :] == xy)
# True
在添加了None
的维度上重复该数组(因为其长度为1)。
因此,输出的形状变为(13, 5, 2)
。
答案 1 :(得分:2)
xy = x[:, None]+y
应该可以解决问题。