簡體   English   中英

(m, 2), (n, 2) 數組的有效相加

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM