[英]how to convert numpy array into tuple
我需要這樣轉換數組:
[[1527 1369 86 86]
[ 573 590 709 709]
[1417 1000 68 68]
[1361 1194 86 86]]
喜歡這個:
[(726, 1219, 1281, 664),
(1208, 1440, 1283, 1365),
(1006, 1483, 1069, 1421),
(999, 1414, 1062, 1351),]
我嘗試直接使用convert轉換為元組,但是得到了:
( array([1527, 1369, 86, 86], dtype=int32),
array([573, 590, 709, 709], dtype=int32),
array([1417, 1000, 68, 68], dtype=int32),
array([1361, 1194, 86, 86], dtype=int32))
(array([701, 899, 671, 671], dtype=int32),)
數組方法tolist
是將數組轉換為列表的便捷方法。 它可以正確處理多個尺寸:
In [92]: arr = np.arange(12).reshape(3,4)
In [93]: arr
Out[93]:
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]])
In [94]: arr.tolist()
Out[94]: [[0, 1, 2, 3], [4, 5, 6, 7], [8, 9, 10, 11]]
對於大多數目的,例如列表列表與元組列表或元組列表一樣好。 它們僅在可變性方面有所不同。
但是,如果您必須有一個元組,則列表理解可以很好地進行轉換。
In [95]: [tuple(x) for x in arr.tolist()]
Out[95]: [(0, 1, 2, 3), (4, 5, 6, 7), (8, 9, 10, 11)]
另一種選擇[tuple(x) for x in arr]
要慢一些,因為它是在數組上而不是在列表上進行迭代。 它也產生不同的結果-盡管您必須檢查元組元素的type
才能看到。
我強烈建議從tolist
方法開始,然后再進行任何列表到元組的轉換。
如何使用像這樣的tuble和map函數:
import numpy
numpy_arr = numpy.array(((1527, 1369, 86, 86),(573 , 590 , 709, 709)))
converted_list = tuple(map(tuple,numpy_arr)) # as list
converted_arr = map(tuple,numpy_arr) #as array
print(converted_arr)
假設您不希望最終對象成為numpy對象,則以下函數如下。
def fun(var):
a=[]
for i in var:
a.append(tuple(i))
return a
如果你想一行
def fun(var):
return [tuple(i) for i in var]
如果您更喜歡列表理解而不是map():
a = numpy.random.uniform(0,1,size=(4,4))
a_tuple_list = [tuple(row) for row in a]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.