Python sets
делает хорошую работу по предоставлению различий. Это не так, хотя, поддерживать порядок
np.array(list(set(tuple(x) for x in a.tolist()).difference(set(tuple(x) for x in b.tolist()))))
Или использовать логическое индексирование, использовать вещания для создания outer equals
и sum
с any
и all
A = np.all((a[None,:,:]==b[:,None,:]),axis=-1)
A = np.any(A,axis=0)
a[~A,:]
Или сделать a
и b
комплексов:
ac = np.dot(a,[1,1j])
bc = np.dot(b,[1,1j])
A = np.any(ac==bc[:,None],axis=0)
a[~A,:]
или использовать setxor1d
xx = np.setxor1d(ac,bc)
# array([ 2.+1.j, 3.+1.j, 3.+3.j])
np.array([xx.real,xx.imag],dtype=int).T
=================
In [222]: ac = np.dot(a,[1,1j])
...: bc = np.dot(b,[1,1j])
In [223]: ac
Out[223]: array([ 1.+1.j, 2.+1.j, 3.+1.j, 3.+2.j, 3.+3.j, 5.+5.j])
In [225]: bc
Out[225]: array([ 1.+1.j, 5.+5.j, 3.+2.j])
In [226]: ac == bc[:,None]
Out[226]:
array([[ True, False, False, False, False, False],
[False, False, False, False, False, True],
[False, False, False, True, False, False]], dtype=bool)
Это дубликат, я извиняюсь, я сделал поиск, но не смог найти ответ. – enedene
@enedene Не беспокойтесь, отмечая вопрос как дубликат, это не обвинение или наказание, это скорее скорее указатель на место, где уже есть ответы. Вы задали вопрос более четко, imo, но ответы уже существуют. – askewchan