【发布时间】:2016-07-13 22:33:29
【问题描述】:
我有两个 numpy 数组 a 和 b,有两千万个元素(浮点数)。如果这两个数组的组合元素相同,那么我们称之为重复,应该从两个数组中删除。例如,
a = numpy.array([1,3,6,3,7,8,3,2,9,10,14,6])
b = numpy.array([2,4,15,4,7,9,2,2,0,11,4,15])
从这两个数组中,我们有a[2]&b[2] 与a[11]&b[11] 相同,那么我们称之为重复元素,应该删除它。同a[1]&b[1] vs a[3]&b[3]虽然每个数组本身都有重复元素,但它们不被视为重复元素。所以我希望返回的数组是:
a = numpy.array([1,3,6,7,8,3,2,9,10,14])
b = numpy.array([2,4,15,7,9,2,2,0,11,4])
谁有最聪明的方法来实现这种减少?
【问题讨论】:
-
b[a!=b]和a[a!=b]会起作用吗? -
我试过了,它没有按预期工作。
-
啊,误读了问题,
np.vstack({tuple(row) for row in np.column_stack((a,b))})应该可以工作,可能不会给出您的第一个唯一元素顺序。 -
我不知道它的成本是多少,但是你能不能像
np.vstack((a,b)).T那样把它们做成一个数组,然后用this answer来查找唯一的行?
标签: python arrays numpy duplicates