我需要比較兩個只由 0 和 1 組成的陣列:
A = [0,1,0,0,1]
B = [1,1,0,0,1]
我想獲得不等于的元素數量和百分比,我嘗試了以下代碼:
print(numpy.mean(A == B))
但有時當某些元素相等時我會得到 0...
uj5u.com熱心網友回復:
要獲得兩個串列索引中不相等的元素數量,您可以這樣做:
noneq = sum(i==j for i, j in zip(A, B))
要獲得百分比,您可以簡單計算noneq/len(A)或noneq/len(B)
uj5u.com熱心網友回復:
您可以使用串列理解來創建索引中的值是否相等的串列,然后計算所述串列的平均值。
numpy.mean([x == y for x, y in zip(A, B)])
uj5u.com熱心網友回復:
import numpy as np
A = np.array([0,1,0,0,1])
B = np.array([1,1,0,0,1])
# number of
(A!=B).sum() #1
# percentage
(A!=B).sum()*100 / A.size
uj5u.com熱心網友回復:
用于count_nonzero統計滿足條件的元素個數
A = np.array([0,1,0,0,1])
B = np.array([1,1,0,0,1])
print(np.count_nonzero((A==B) == True))
對于百分比使用 np.count_nonzero/shape
uj5u.com熱心網友回復:
雖然串列理解總是最優雅的解決方案 - 在我看來也是美學 - 我發現以下稍微快一點:
def calc(v1, v2):
s = 0
for i, x in enumerate(v1):
s = x == v2[i]
return s / len(v1)
顯然,在所有情況下,您應該始終檢查/了解 ifA和Bhace 不同長度會發生什么(例如,我剛剛分享的代碼將回傳IndexErrorif len(v1) > len(v2);在這方面,zip在不同版本的 python 中表現不同)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/371781.html
上一篇:將ajax回應附加到html表
