簡體   English   中英

如何將python集轉換為numpy數組?

[英]How to convert a python set to a numpy array?

我在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個元素,並希望有一個內置函數來保存循環。 謝謝!

做:

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

並且dtype是int(在我這邊的int64。)

不要將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])

嘗試這個。

numpy.array(list(c))

在初始化numpy數組之前轉換為list會將各個元素設置為整數而不是第一個元素作為對象。

嘗試:

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

這是使用list作為中間產品的解決方案的兩倍。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM