[英]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.