比方说,我有以下形式的numpy的阵列从numpy的阵列获取的非重复的行
x = np.array([[2, 5],
[3, 4],
[1, 3],
[2, 5],
[4, 5],
[1, 3],
[1, 4],
[3, 4]])
我想从这个得到的是只包含其中不重复的行,即数组,我期望从这个例子
array([[4, 5],
[1, 4]])
我正在寻找一种方法,是相当快速和规模很好。我能想到做到这一点的唯一方法是
- 首先找到该组唯一的行中
x
,作为一个新的阵列y
。 - 创建,其具有从
x
除去y
那些个体元素的数组z
,从而z
是在x
复制的行的列表。 - 做一个
x
和z
之间的差异。
虽然这似乎非常低效。任何人都有更好的方法?
如果它很重要,我保证我的每一行都会从最小排序到最大排列,因此您永远不会有一行是[5, 2]
或[3, 1]
。
你为什么认为这样效率低下?使用散列表,这应该是一个O(n)时间算法,这是非常合理的。你不能做得更好,因为你必须看看每个元素。 –
由于必须自己执行循环,我预计它效率低下。我知道没有本地numpy的方法,将执行第2步。 – zephyr
哦,我明白了,但我不认为numpy或熊猫用C代码优化了这些,你可能也想比较运行时间和你自己的循环。 –