numpy在多个阵列上唯一

numpy在多个阵列上唯一,numpy,numpy-ndarray,Numpy,Numpy Ndarray,Numpy.unique需要一个一维数组。如果输入不是一维数组,则默认情况下会将其展平 有没有办法让它接受多个阵列?为了简单起见,让我们假设一对数组,我们在两个数组中对这对元素进行唯一的排序 例如,假设我有2个numpy数组作为输入 a = [1, 2, 3, 3] b = [10, 20, 30, 31] 我对这两个数组都是唯一的,所以对这4对(1,10),(2,20)(3,30)和(3,31)。这4个都是独一无二的,所以我想我的结果是 [True, True,

Numpy.unique需要一个一维数组。如果输入不是一维数组,则默认情况下会将其展平

有没有办法让它接受多个阵列?为了简单起见,让我们假设一对数组,我们在两个数组中对这对元素进行唯一的排序

例如,假设我有2个numpy数组作为输入

a = [1,    2,    3,    3]
b = [10,   20,   30,  31]
我对这两个数组都是唯一的,所以对这4对(1,10),(2,20)(3,30)和(3,31)。这4个都是独一无二的,所以我想我的结果是

[True, True, True, True]
如果相反,输入如下

a = [1,    2,    3,    3]
b = [10,   20,   30,  30]
那么最后两个元素不是唯一的。所以输出应该是

[True, True, True, False]

您可以使用
numpy.unique()
返回的
unique\u索引值:

[243]中的
:定义是唯一的(*lsts):
…:arr=np.vstack(lsts)
…:u,ind=np.unique(arr,axis=1,return_index=True)
…:out=np.zeros(shape=arr.shape[1],dtype=bool)
…:out[ind]=真
…:返回
在[244]中:a=[1,2,2,3,3]
在[245]中:b=[1,2,2,3,3]
在[246]中:c=[1,2,0,3,3]
在[247]中:是唯一的(a,b)
Out[247]:数组([True,True,False,True,False])
In[248]:是唯一的(a,b,c)
Out[248]:数组([True,True,True,False])

您可能也会发现有帮助。

您是否查看了轴的
参数?谢谢。这是有道理的。后续问题-如果我的输入列表是不同的数据类型,您的建议是什么?e、 g.a.dtype=int64,b.dtype=datetime[D]
vstack
抱怨类型升级无效。把datetime[D]数组变成散列数组怎么样?创建一个对象数组可能是
np的一种方法。数组([a,b],dtype=object)
但是dtype不支持将axis参数转换为unique。再想一想,我会把date数组转换成字符串np数组<考虑到这一点,code>vstack
axis
工作正常。这是一个合理的解决方案,对吗?是的,这似乎是一个合理的解决办法