[英]efficient addition of (m, 2), (n, 2) arrays
我有两个numpy的阵列, x
形状的(m, 2)
和y
形状的(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
])
但我想知道是否有通过numpy.add.outer
或类似方法的更有效的解决方案。
您可以使用 numpys 广播规则将第一个数组转换为形状(13, 1, 2)
,将第二个数组转换为形状(1, 5, 2)
:
numpy.all(x[:, None, :] + y[None, :, :] == xy)
# True
该数组在添加None
的维度上重复(因为它的长度为 1)。
因此输出的形状变为(13, 5, 2)
。
xy = x[:, None]+y
应该做的伎俩。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.