我有兩個形狀矩陣(43, 25520),它們被稱為m1和m2。if m1 <= m2: distance = (m1 - m2) / m2else: distance = (m1 - m2) / m1因此,對于每個 index i,我想從中減去m2[i],m1[i]然后除以這兩個中的較大值。我的錯誤信息是ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()如何修復錯誤并完成我想要的。
1 回答

泛舟湖上清波郎朗
TA貢獻1818條經驗 獲得超3個贊
np.maximum
返回兩個矩陣的元素最大值:
(m1 - m2) / np.maximum(m1, m2)
如果您只想要小于一的正值,請使用np.absolute
:
np.absolute((m1 - m2) / np.maximum(m1, m2))
或者,你可以做
(np.maximum(m1, m2) - np.minimum(m1, m2)) / np.maximum(m1, m2))
您收到錯誤的原因是該表達式m1 >= m2
是一個與兩個數組大小相同的布爾掩碼。您不能將大量布爾值轉換為單個布爾值,即使可以,and 中的表達式if
也else
可以對整個數組進行操作。您需要對條件進行矢量化,我已經向您展示了如何執行此操作。
添加回答
舉報
0/150
提交
取消