2024-04-23 08:39:16 发布
网友
Python 3: 如何比较两个形状相似的矩阵
例如,假设我们有矩阵x:
1 0 1 0 0 1 1 1 0
我想将其与矩阵y进行比较:
1 0 1 0 0 1 1 1 1
这将给我一个分数,例如,8/9,因为8/9的项目是相同的,除了最后一个数字从0到1。我正在处理的矩阵要大得多,但它们的维数是一致的,便于比较
一定有某种图书馆可以做到这一点。有什么想法吗
如果您使用的是numpy,那么在进行如下比较之后,只需在布尔数组上使用np.mean()
np.mean()
import numpy as np m1 = np.array([ [1, 0, 1], [0, 0, 1], [1, 1, 0], ]) m2 = np.array([ [1, 0, 1], [0, 0, 1], [1, 1, 1], ]) score = np.mean(m1 == m2) print(score) # prints 0.888..
如果您的矩阵是使用第三方库Numpy表示的(该库提供了许多其他有用的东西,用于处理矩阵,以及任何类型的矩形多维数组):
>>> import numpy as np >>> x = np.array([[1,0,1],[0,0,1],[1,1,0]]) >>> y = np.array([[1,0,1],[0,0,1],[1,1,1]])
然后,找到相应相等元素的数量非常简单,如下所示:
>>> (x == y).sum() / x.size 0.8888888888888888
这是因为x == y“广播”每个对应元素对的比较:
x == y
>>> x == y array([[ True, True, True], [ True, True, True], [ True, True, False]])
然后我们将布尔值相加(转换为整数,True的值为1,False的值为0),然后除以元素总数
True
False
使用numpy阵列可以轻松地完成此操作
import numpy as np a = np.array([ [1, 0, 1], [0, 0, 1], [1, 1, 0], ]) b = np.array([ [1, 0, 1], [0, 0, 1], [1, 1, 1], ]) print(np.sum(a == b) / a.size)
返回0.889
如果您使用的是numpy,那么在进行如下比较之后,只需在布尔数组上使用
np.mean()
如果您的矩阵是使用第三方库Numpy表示的(该库提供了许多其他有用的东西,用于处理矩阵,以及任何类型的矩形多维数组):
然后,找到相应相等元素的数量非常简单,如下所示:
这是因为
x == y
“广播”每个对应元素对的比较:然后我们将布尔值相加(转换为整数,
True
的值为1,False
的值为0),然后除以元素总数使用numpy阵列可以轻松地完成此操作
返回0.889
相关问题 更多 >
编程相关推荐