考慮一個元組串列,例如:
a = [(1,2), (3,4)]
我經常發現自己試圖將這些串列解壓縮到每個列值的單獨串列中,例如:
b,c = list(zip(*a))
在這種情況下,b將是一個包含值1和的串列3。
我經常發現自己想要b并c成為 numpy 陣列而不是串列。在這種情況下,我通常做的是:
b,c = list(zip(*a))
b = np.array(b)
c = np.array(c)
最后兩行看起來很麻煩。有沒有辦法將串列直接解壓縮到兩個 numpy 陣列中而不直接通過它們numpy.array?
謝謝
uj5u.com熱心網友回復:
可以通過呼叫將元組串列轉換為二維 numpy 陣列np.array。然后可以使用元組分配將其轉置,然后沿第一個維度解包:
b, c = np.array(a).T
這里給出:
>>> import numpy as np
>>> a = [(1,2), (3,4)]
>>> b, c = np.array(a).T # or: np.array(a).transpose()
>>> b
array([1, 3])
>>> c
array([2, 4])
警告:您將擁有一個與 元素數量相同的臨時陣列a,因此它的記憶體效率可能低于您的原始解決方案,尤其是當您將其解包為大量一維陣列時。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/348728.html
