除以更大的减法值

Dividing by bigger value of substraction

我有两个形状为 (43, 25520) 的矩阵,它们分别称为 m1m2

if m1 <= m2:
    distance = (m1 - m2) / m2
else:
    distance = (m1 - m2) / m1

所以对于每个索引 i,我想从 m1[i] 中减去 m2[i],然后除以这两个中较大的值。

我的错误信息是

ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

如何修复错误并完成我想要的。

np.maximum returns 两个矩阵的元素最大值:

(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 是一个与两个数组大小相同的布尔掩码。您无法将大量布尔值转换为单个布尔值,即使可以,ifelse 中的表达式也会对整个数组进行运算。您需要矢量化条件,我已经向您展示了如何操作。