Python Numpy 2d集合差异

Python Numpy 2d集合差异,python,pandas,numpy,Python,Pandas,Numpy,在numpy中,这两个阵列之间是否可能存在差异: [[0 0 0 0 1 1 1 1 2 2 2 2] [0 1 2 3 0 1 2 3 0 1 2 3]] [[0 0 0 0 1 1 1 2 2 2] [0 1 2 3 0 2 3 0 1 2]] 有这样的结果 [[1 2] [1 3]] ?关于: a=[[0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2], [0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3]] b=[[0, 0, 0,

在numpy中,这两个阵列之间是否可能存在差异:

[[0 0 0 0 1 1 1 1 2 2 2 2]
 [0 1 2 3 0 1 2 3 0 1 2 3]]


[[0 0 0 0 1 1 1 2 2 2]
 [0 1 2 3 0 2 3 0 1 2]]
有这样的结果

[[1 2]
 [1 3]]

关于:

a=[[0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2], [0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3]]
b=[[0, 0, 0, 0, 1, 1, 1, 2, 2, 2], [0, 1, 2, 3, 0, 2, 3, 0, 1, 2]]
a = np.array(a).T
b = np.array(b).T
A = [tuple(t) for t in a]
B = [tuple(t) for t in b]
set(A)-set(B)
Out: {(1, 1), (2, 3)}

这是一种方式。对于类似的解决方案,您也可以使用
numpy.unique
(在v1.13+中更容易,请参阅),但如果性能不是问题,您可以使用
set

import numpy as np

A = np.array([[0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2],
              [0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3]])

B = np.array([[0, 0, 0, 0, 1, 1, 1, 2, 2, 2],
              [0, 1, 2, 3, 0, 2, 3, 0, 1, 2]])

res = np.array(list(set(map(tuple, A.T)) - set(map(tuple, B.T)))).T

array([[2, 1],
       [3, 1]])

你能解释差异背后的模式吗?据我所知,结果是第一个数组中存在的列,但第二个数组中缺少。因此,python集合减法的一个列级等价物是的,我认为这是显而易见的。考虑两个数组,即2个列表之间的关联:(0,0),(0,1)…(2,3)为第一阵列,(0,0),(0,1)..(2,2)的SECODN阵列。我想找出这些关联之间的区别,即(1,2)和(1,3)啊,我看不出unique有多大帮助,因为我有两个不同形状的数组。或者我遗漏了什么?@sergiuz,尝试使用
axis
参数或通过
A.T
B.T
转换矩阵。