从NumPy数组订购python集

时间:2012-12-07 22:46:49

标签: python numpy set

我无法弄清楚为什么我从NumPy数组中创建一个集合,Python交换了元素的顺序:

import numpy as np
A = np.array([2])
B = np.array([2, 8])
setA = set(A)
setB = set(B)

In [6]: A
Out[6]: [2]

In [7]: B
Out[7]: [2, 8]

In [8]: setA
Out[8]: set([2])

In [9]: setB
Out[9]: set([8, 2])

In [10]: list(setA.union(setB))
Out[10]: [8, 2]

In [11]: np.union1d(A,B).tolist()
Out[11]: [2, 8]

为什么创建set(B)

不会维护订单?

2 个答案:

答案 0 :(得分:3)

根据定义,

set没有顺序 - 而是创建它们以优化某些操作,例如那些测试包含的操作。因此,在创建/添加元素集时,不应该依赖于订单保留。

答案 1 :(得分:3)

集合为unordered collections of unique elements,因此set([2,8])和set([8,2])完全相同。你为什么在乎?也许一套不是你需要的......