сравните два массива numpy

#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