Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/343.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从NumPy数组排序python集_Python_Numpy_Set - Fatal编程技术网

从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]

我很难理解为什么我要从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)
时不会维护顺序?

set
根据定义,它们没有顺序-它们的创建是为了优化某些操作,例如安全壳测试。因此,在向集合中创建/添加元素时,绝不应依赖顺序保留。

集合是,因此集合([2,8])和集合([8,2])完全相同。你为什么在乎?也许一个集合不是你所需要的…

打印集合([8,2])==set([2,8])
我同意它在某种意义上并不重要,但尽管如此,我仍然认为这是一个有效的问题…为什么是复杂的,并且与哈希方法有关。Doh!这是有道理的。顺序确实会有所不同,所以我可能不得不使用另一种方法。谢谢