如何将python集转换为numpy数组?

How to convert a python set to a numpy array?

我在python中使用set操作在两个numpy数组之间执行对称差异。 但是,结果是一个集合,我需要将其转换回numpy数组以继续前进。 有没有办法做到这一点? 这是我尝试过的:

1
2
3
a = numpy.array([1,2,3,4,5,6])
b = numpy.array([2,3,5])
c = set(a) ^ set(b)

结果是一组:

1
2
In [27]: c
Out[27]: set([1, 4, 6])

如果我转换为numpy数组,它将整个集合放在第一个数组元素中。

1
2
In [28]: numpy.array(c)
Out[28]: array(set([1, 4, 6]), dtype=object)

但是,我需要的是:

1
array([1,4,6],dtype=int)

我可以遍历元素以一次一转换,但是我将有100,000个元素,并希望有一个内置函数来保存循环。 谢谢!


做:

1
2
>>> numpy.array(list(c))
array([1, 4, 6])

dtype是int(在我这边是int64。)


不要将numpy数组转换为执行异或的集合。 直接使用setxor1d。

1
2
3
4
5
>>> import numpy
>>> a = numpy.array([1,2,3,4,5,6])
>>> b = numpy.array([2,3,5])
>>> numpy.setxor1d(a, b)
array([1, 4, 6])


尝试这个。

1
numpy.array(list(c))

在初始化numpy数组之前转换为list会将单个元素设置为integer而不是将第一个元素作为对象。


尝试:

1
numpy.fromiter(c, int, len(c))

这是列表解决方案的两倍,是中间产品的速度。