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

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

结果是一组:

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

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

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

但是,我需要的是:

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

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

===============>>#1 票数:36

做:

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

并且dtype是int(在我这边的int64。)

===============>>#2 票数:28 已采纳

不要将numpy数组转换为set来执行exclusive-or。 直接使用setxor1d

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

===============>>#3 票数:7

尝试这个。

numpy.array(list(c))

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

===============>>#4 票数:1

尝试:

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

这是使用list作为中间产品的解决方案的两倍。

  ask by mishaF translate from so

未解决问题?本站智能推荐:

3回复

如何在python中从一个集转换为一个数组

问题: 我需要将一个集转换为数组。 如果我尝试只做np.array(X),我得到一个包含一个集合的数组,这不是很有用。 如果我将我的集合转换为列表然后将我的列表转换为数组,一切正常,但这看起来不必要复杂(所讨论的代码行已经是一个复杂的不必要的复杂性)。 有没有办法直接从一个阵列到阵列
2回复

将NumPy数组转换为集合需要太长时间

我正在尝试执行以下操作 与以下内容相比需要花费很长时间: 为什么将NumPy数组转换为set比转换为list要花费更长的时间? 我的意思是基本上都具有O(n)复杂度?
6回复

从Numpy矩阵构造Python集

我正在尝试执行以下操作 如何使用Numpy数组中的所有元素轻松高效地创建集合?
3回复

确定两个numpy数组在Python中相交的参数

我有两个数组,说: 我需要找到b中不存在的所有元素的索引。 在上面的例子中,结果将是: 因为a [0],a [1]和a [3]是13.,14和32.,它们在b中不存在。 请注意,我不知道13,14和32的实际值。(在这种情况下,我可以使用set(a).difference(s
1回复

Python-如何将图像中的数组变成集合?

好,这是我的代码 我希望能够将所拍摄图像的像素与我存储的像素列表进行对称性区别(从两个列表/集合中获取所有相似的数字)。 我也知道我的颜色设置方法是垃圾/可能是错误的,但是我一次只做一件事。 无论如何,我一直尝试将一个或多个像素转换为列表或集合,但是这种情况一直持续
2回复

在Numpy数组中设置新属性

当你阅读这个问题时,你会发现我是Python和NumPy的新手,所以请原谅任何不正确的术语。 我目前正在使用两个NumPy数组,让我们称它们为x和y 。 我在这些数组上运行,其函数将这些数组作为输入和输出。 这似乎是不优雅的,因为如果我可以让它们成为同一个对象的一部分,那么
1回复

如何最快地将矩阵压缩到NumPy中的数组/集合中?

我怎样才能使矩阵像mat0 = np.array([[1,2,3],[4,5,6],[7,8,9]])展平到像arr0 = np.array([1,2,3,4,5,6,7,8,9]) ? 还是一套?
2回复

如何打印我刚刚使用numpy zip()压缩的数组数据

我试图弄清楚如何从压缩的内容中查看数据。 该方案在代码中如下所示: 产量 但我想查看zip内的数据,所以当我说 表明 现在人们在关于D_stacking的类似帖子中进行讨论。 但它显示输出为错误 0维..? 这是什么意思..? 对于其他我找
1回复

根据一列中的公共值,从两个或多个2d numpy数组创建交集

我有3个numpy recarray具有以下结构。 第一列是某个位置(整数),第二列是分数(Float)。 输入: 所有3个数组都包含相同数量的元素。 我正在寻找一种基于位置列将这三个2d数组合成一个数组的有效方法。 上面示例的输出arary应如下所示: 输出:
1回复

根据python中的逻辑数组设置数组的值

我有一个数组a=np.array([ -1, 20, 34, 4, 5, -60, -7, 8]) ,我想以这种方式测试2个条件: p=np.logical_or(a<=5, a>=25) 。 以这种方式,我有一个逻辑数组(True-False, 0-1) 。 现在,我想将满足p