我有一個問題,我有兩個維度為 nxd 和 dxh 的陣列 ,其中n、d和h是可能相同也可能不同的正整數。我試圖找到兩個矩陣的點積,但條件是對于每個乘法,我將函式g應用于該術語。
例如,在n =2、d =3 和h =3 的情況下,如果我有以下矩陣:
a = [[1, 2, 3],
[4, 5, 6]]
b = [[1, 2, 3],
[4, 5, 6],
[1, 1, 1]]
我想找到c這樣
c = [[g(1*1) g(2*4) g(3*1), g(1*2) g(2*5) g(3*1), g(1*3) g(2*6) g(3*1)],
[g(4*1) g(5*4) g(6*1), g(4*2) g(5*5) g(6*1), g(4*3) g(5*6) g(6*1)]]
任何幫助,將不勝感激
uj5u.com熱心網友回復:
我能夠通過首先使用廣播進行乘法,應用g(),然后在正確的軸上求和來做到這一點:
import numpy as np
def g(x):
return 1 / (1 np.exp(-x))
a = np.array([[1, 2, 3],
[4, 5, 6]])
b = np.array([[1, 2, 3],
[4, 5, 6],
[1, 1, 1]])
首先,乘法a[:, None] * b.T(可能是一種更好的方法),然后計算g(x),然后在軸 2 上求和:
>>> g(a[:, None] * b.T).sum(axis=2)
array([[2.68329736, 2.83332581, 2.90514211],
[2.97954116, 2.99719203, 2.99752123]])
驗證第一行確實與您想要的結果匹配:
>>> g(1*1) g(2*4) g(3*1)
2.683297355321972
>>> g(1*2) g(2*5) g(3*1)
2.8333258069316134
>>> g(1*3) g(2*6) g(3*1)
2.9051421094702645
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/516075.html
標籤:Python数组麻木的
上一篇:僅保留檔案名的最終版本或最新版本
