파이썬 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 질문을 복제본으로 표시하는 것은 고발이나 징계가 아니라, 이미 답변이있는 곳을 가리키는 포인터입니다. 당신은 질문을 더 명확하게 해주었습니다. 그러나 그 대답은 이미 거기에 있습니다. – askewchan