對于給定的矩陣,我要從該行中減去每一行的最大值。在MATLAB中,我會做類似的事情Xm = X - repmat(max(X,[],2), 1, size(X,2));對于Python,我一直在玩各種Xm = X - np.matlib.repmat(np.max(X,axis = 1), 1, len(X[0])) 但無濟于事!我到底在哪里錯過了?非常感謝。
1 回答

江戶川亂折騰
TA貢獻1851條經(jīng)驗 獲得超5個贊
在Python / NumPy中,無需顯式復(fù)制數(shù)組以使其與另一個數(shù)組匹配。大小為1的尺寸(單個尺寸)會在它們稱為“廣播”的過程中自動擴展。
例如,給定
X = np.array([[1,2,3,4,5],[4,5,6,7,8],[7,8,9,10,11]])
你可以寫
X - np.max(X, axis=0)
由返回的數(shù)組np.max
的形狀為(5,)
,與X
((3, 5)
)的形狀兼容。NumPy對齊從最后一個維度開始的形狀,如果一個數(shù)組比另一個數(shù)組少,則在前面填充單例尺寸。
但是,此過程有時需要一點幫助。因為np.max
返回的數(shù)組的維數(shù)小于輸入的數(shù)組,所以廣播通常不能這樣做。匹配這些數(shù)組。例如,X - np.max(X, axis=1)
不起作用。
最好的解決方案是將keepdims
參數(shù)用于np.max
:
X - np.max(X, axis=1, keepdims=True)
另一種選擇是np.newaxis
在索引中使用添加單例尺寸:
X - np.max(X, axis=1)[:, np.newaxis]
添加回答
舉報
0/150
提交
取消