从NumPy数组排序python集
我很难理解为什么我要从NumPy数组中创建一个集合,Python会交换元素的顺序:从NumPy数组排序python集,python,numpy,set,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]
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)
时不会维护顺序?set
根据定义,它们没有顺序-它们的创建是为了优化某些操作,例如安全壳测试。因此,在向集合中创建/添加元素时,绝不应依赖顺序保留。集合是,因此集合([2,8])和集合([8,2])完全相同。你为什么在乎?也许一个集合不是你所需要的…打印集合([8,2])==set([2,8])
我同意它在某种意义上并不重要,但尽管如此,我仍然认为这是一个有效的问题…为什么是复杂的,并且与哈希方法有关。Doh!这是有道理的。顺序确实会有所不同,所以我可能不得不使用另一种方法。谢谢