簡體   English   中英

Numpy einsum廣播

[英]Numpy einsum broadcasting

有人可以解釋廣播(省略號)如何在numpy.einsum()函數中工作?

將非常感謝一些示例來說明如何以及何時使用它。

我檢查了以下官方文檔頁面,但只有2個例子,我似乎無法理解如何解釋它並使用它。

http://docs.scipy.org/doc/numpy-1.10.0/reference/generated/numpy.einsum.html

橢圓是一個粗略的縮寫,代表“未明確提到的所有剩余軸”。 例如,假設您有一個形狀數組(2,3,4,5,6,6):

import numpy as np
arr = np.random.random((2,3,4,5,6,6))

你希望沿着最后兩個軸追蹤:

result = np.einsum('ijklmm->ijklm', arr)
result.shape
# (2, 3, 4, 5, 6)

一種等效的方法是

result2 = np.einsum('...mm->...m', arr)
assert np.allclose(result, result2)

省略號提供簡寫符號(在這種情況下)“和所有軸向左”。 ...代表ijkl

關於不必明確的一件好事是

np.einsum('...mm->...m', arr)

同樣適用於任意數量維數> = 2的數組(只要最后兩個具有相等的長度),而

np.einsum('ijklmm->ijklm', arr)

僅當arr正好有6個維度時才有效。


當橢圓出現在中間時,它是“未明確提到的所有中軸”的簡寫。 例如,下面, np.einsum('ijklmi->ijklm', arr)相當於np.einsum('i...i->i...', arr) 這里...代表jklm

arr = np.random.random((6,2,3,4,5,6))
result = np.einsum('ijklmi->ijklm', arr)
result2 = np.einsum('i...i->i...', arr)
assert np.allclose(result, result2)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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