Интерпретируя это как ожидаемый результат в вашем последнем примере, используя zip
, попробуйте:
arr4 = arr1[np.equal(arr1, arr2) & np.equal(arr2, arr3)]
Для интерпретации в вашем первом блоке кода вы можете использовать понимание списка:
list4 = [arr1[i] if arr1[i] == arr2[i] else arr3[i] if arr2[i] == arr3[i] else None for i in range(len(arr1))]
arr4 = np.array(list4)
Исходя из вашего примера, я не уверен, что значения по умолчанию для arr4, если ни arr1[i] == arr2[i]
, ни arr2[i] == arr3[i]
, поэтому оставили их как None
выше.
Два подхода дают разные ответы, но если я правильно интерпретирую, первым является желаемое поведение.