簡體   English   中英

python:我如何壓縮兩個數組

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

注意:我假設您的代碼中的maxtop_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.

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