[英]python: how do I zip up two arrays
我得到以下元組,並嘗試壓縮這些值:
top_4 = (array([ 24, 126, 33, 106]), array([ 98, 135, 330, 339]))
我怎樣才能把它們拉在一起? 我想要 [(24, 98), (126, 135), (33, 330), (106, 339)]
我為輸入顯示的元組是我的函數返回的。 我想我不知道如何將它們從數組包裝器中取出。
當我執行以下操作時:
points = zip(max[0], max[1])
我得到一個不可下標的“zip”對象。
您的代碼將返回一個zip
對象,該對象旨在進行迭代,例如在 for 循環中。 因此,如果你想解壓它,你必須從中創建一個列表:
points = list(zip(max[0], max[1]))
注意:我假設您的代碼中的max
和top_4
可以互換。
將您對 zip 的調用包裝在 list() 中,您應該能夠編寫它的腳本。
一次拉一個。 像這樣:
top_4 = ([ 24, 126, 33, 106], [ 98, 135, 330, 339])
m = [(top_4[0][i],top_4[1][i]) for i in range(len(top_4[0]))]
print(m)
輸出:
[(24, 98), (126, 135), (33, 330), (106, 339)]
您甚至可以使用星號運算符:
points = list(zip(*top_4))
%%timeit -n 1000000
list(zip(*top_4))
1.97 µs ± 63.9 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)
%%timeit -n 1000000
[(top_4[0][i],top_4[1][i]) for i in range(len(top_4[0]))]
2.25 µs ± 142 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)
%%timeit -n 1000000
[(x, y) for x,y in zip(top_4[0], top_4[1])]
2.46 µs ± 167 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)
嘗試這個:
import numpy as np
top_4 = (np.array([ 24, 126, 33, 106]), np.array([ 98, 135, 330, 339]))
result = list(zip(top_4[0], top_4[1]))
print(result)
輸出:
[(24, 98), (126, 135), (33, 330), (106, 339)]
list_tuples = (([ 24, 126, 33, 106]),([ 98, 135, 330, 339]))
points = [(x, y) for x,y in zip(list_tuples[0], list_tuples[1])]
print(points)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.