我正在研究泰坦尼克號資料集,在運行一些演算法之后,我得到了 y_predictions 的 numpy 陣列。我想比較它們并僅提取每個位置每個陣列中相等的值。例如:
| 指數 | 一種 | 乙 | C | d |
|---|---|---|---|---|
| 0 | 1 | 1 | 1 | 1 |
| 1 | 1 | 0 | 1 | 1 |
| 2 | 0 | 0 | 1 | 0 |
| 3 | 0 | 1 | 0 | 1 |
| 4 | 0 | 0 | 0 | 0 |
a、b、c 和 d 是演算法的 y_predictions。輸出應該是:[1, 0, 0, 0, 1] 因為在索引 0 和 4 處所有的值都相等,所以我分配了 1,否則為 0。基本上,我想做的是查看索引(乘客),這些演算法將其識別為“幸存”,由 1 表示。
有我的代碼:
a= [1,1,0,0,0]
b= [1,0,0,1,0]
c= [1,1,1,0,0]
d= [1,1,0,1,0]
L= [a,b,c,d]
holder = L[0]
for i in range(len(L)):
equality = np.where(holder == L[i 1], holder, 'None')
holder = equ
但我得到了一些錯誤。我將不勝感激任何建議
uj5u.com熱心網友回復:
您的 L 陣列形狀錯誤,您應該對 L 進行轉置以獲得描述中的表格,我建議您將其轉換為 numpy 陣列:
result = []
a= [1,1,0,0,0]
b= [1,0,0,1,0]
c= [1,1,1,0,0]
d= [1,1,0,1,0]
L=np.array([a,b,c,d]).T
holder = L[0]
for i in range(len(L)):
result.append(int(np.all(L[i,:] == L[i,0])))
print(result)
uj5u.com熱心網友回復:
使用.all方法 onarr檢查是否存在所有值都為 1 的列,然后.all再次使用on(arr==0)檢查是否存在所有值都為 0 的列。這兩個陣列的總和將是您想要的結果:
arr = np.array([a,b,c,d])
out = (arr.all(0) (arr==0).all(0)).astype(int)
輸出:
[1, 0, 0, 0, 1]
uj5u.com熱心網友回復:
正如在另一個答案中指出的那樣,您需要轉置您的串列,并且最好將它們變成一個 numpy 陣列。
你可以像這樣實作你想要的
a= [1,1,0,0,0]
b= [1,0,0,1,0]
c= [1,1,1,0,0]
d= [1,1,0,1,0]
L= np.array([a,b,c,d]).T
same_results = [len(set(col)) == 1 for col in L]
print(same_results)
# [True, False, False, False, True]
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/377969.html
