我有两个形状矩阵(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
提交
取消