#python #arrays #numpy
Вопрос:
Я пытаюсь сравнить два массива 1d numpy на предмет несоответствия следующим образом. Я работаю над этим с частичным успехом.
import numpy as np
a= np.array([0,1,2,3,4,13])
b= np.array([0,1,2,3,4,10,11,12])
mis = max( np.sum(~np.isin(b,a)), np.sum(~np.isin(a,b)))
print(mis)
выход: 3
ожидаемый результат : 4 ( 13,10,11,12 — несоответствия)
Ответ №1:
Почему вы берете максимальную из двух сумм вместо сложения сумм? Вы только захватываете недостающие записи из одного массива (большего), делая это, когда вы явно хотите и то, и другое.
mis = np.sum(~np.isin(b,a)) np.sum(~np.isin(a,b))
Комментарии:
1. Я понял, что сойдет после публикации этого спасибо @David Moreau
Ответ №2:
Ваш код будет работать, если вы добавите np.sum
:
mis = np.sum(~np.isin(b,a)) np.sum(~np.isin(a,b))
Тем не менее, проверьте setxor1d
:
np.setxor1d(a,b)
# out
# array([10, 11, 12, 13])
Тогда вы легко сможете определить длину.
Комментарии:
1. это довольно ловко np.setxor1d спасибо @Quang Hoang