比较几个 numpy 数组并获得相等的值

Comparing few numpy arrays and getting the equal values

我正在研究泰坦尼克号数据集,在我 运行 一些算法之后,我有 y_predictions 的 numpy 数组。 我想比较它们并仅提取每个位置每个数组中相等的值。 例如:

index a b 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。 基本上,我想做的是查看那些算法识别为 'Survived' 的索引(乘客),用 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

但是我遇到了一些错误。 我将不胜感激任何建议

你的 L 数组形状错误你应该对你的 L 进行转置以获得描述中的 table 我建议你将它转换为一个 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)

正如另一个答案中所指出的,您需要转置您的列表,并且最好将它们变成一个 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]