寻找复杂的独特元素

时间:2016-07-15 16:15:48

标签: python python-3.x numpy

我有两个以下数组:

a = [[1,'string',2,3],[2,'otherstring', 6,1],[1, 'otherstring',2,3]]
b = [[7,'anotherstring',4,3],[1,'string',2,3]]

实际上当然要大得多。 我需要找到独特的元素:

>>> unique(a,b)
[[1,"string",2,3],[2,'otherstring', 6,1],
    [1, 'otherstring',2,3],[7,'anotherstring',4,3]]

我想过numpy.unique但它似乎还有另一个功能,因为:

>>> a = np.array([[1, 1], [2, 3]])
>>> np.unique(a)
array([1, 2, 3])

注意:列表(设置(a + b))不起作用,因为列表不可清除。

2 个答案:

答案 0 :(得分:2)

set(tuple(item) for item in a+b)

输出:

set([(2, 'otherstring', 6, 1), (1, 'string', 2, 3), (7, 'anotherstring', 4, 3), (1, 'otherstring', 2, 3)])

答案 1 :(得分:0)

numpy_indexed包可以以矢量化的方式解决这些问题:

import numpy_indexed as npi
npi.unique(tuple(zip(a+b)))