合并两个 numpy 数组并删除重复项?

Wil*_*S89 2 python arrays numpy

我有一个 numpy 数组 =

[1,6,7,9,3,5]
Run Code Online (Sandbox Code Playgroud)

和第二个 numpy 数组 =

[3,5,8,9,2]
Run Code Online (Sandbox Code Playgroud)

我想将这两个数组合并在一起:

[1,6,7,9,3,5,3,5,8,9,2]
Run Code Online (Sandbox Code Playgroud)

然后删除 numpy 数组中的重复项以获得:

[1,6,7,9,3,5,8,2]
Run Code Online (Sandbox Code Playgroud)

我想尽可能多地保留数组一并取出数组二中没有出现在数组一中的元素,然后附加这些元素。

我不确定以下是否更有意义:

  1. 合并两个数组并删除重复项。或者
  2. 循环遍历数组 2 的元素,如果它们没有出现在数组 1 中,则连接到数组 1。

我尝试过使用各种循环,但这些循环似乎主要适用于列表,我也尝试过使用set()但它对numpy数组进行排序,我想保留随机订单形式。

use*_*203 7

要加入两个数组,您可以简单地使用 np.concatenate

在保留顺序的同时删除重复项有点棘手,因为通常np.unique也会排序,但您可以使用return_indexthen sort 来解决这个问题:

In [61]: x
Out[61]: array([1, 6, 7, 9, 3, 5])

In [62]: y
Out[62]: array([3, 5, 8, 9, 2])

In [63]: z = np.concatenate((x, y))

In [64]: z
Out[64]: array([1, 6, 7, 9, 3, 5, 3, 5, 8, 9, 2])

In [65]: _, i = np.unique(z, return_index=True)

In [66]: z[np.sort(i)]
Out[66]: array([1, 6, 7, 9, 3, 5, 8, 2])
Run Code Online (Sandbox Code Playgroud)