簡體   English   中英

如何有效地將2d numpy數組轉換為元組的1d numpy數組?

[英]How to efficiently convert 2d numpy array into 1d numpy array of tuples?

我在使用迭代器從列表到元組時發現了這個問題 ,但我正在處理大量數據。

我發現這個問題是從元組到列表的,實際上有很多問題從元組列表到數組,但是我還沒有找到如何向其他方向發展的問題。

我有:

np.arrray([[   0    1]
           [   1    1]
           [   2    1]
           ..., 
           [1004    3]
           [1005    1]
           [1006    1]])

我想要:

np.arrray([(   0    1)
           (   1    1)
           (   2    1)
           ..., 
           (1004    3)
           (1005    1)
           (1006    1)])

我不一定需要一堆元組,但是我想高效地做到這一點。

為了有效地矢量化此變換,請進行轉置

a = np.array([[   0 ,   1],
              [   1 ,   1],
              [   2 ,   1],
              [   0 ,   1],
              [   1 ,   1],
              [   2 ,   1] ])

at = a.T 

at= array([[0, 1, 2, 0, 1, 2],
          [1, 1, 1, 1, 1, 1]])

然后zip以將兩個一維列表轉換為元組列表

zip(at[0],at[1])

這將比列表理解快得多

但是在python 3.4中

list(zip(at[0],at[1])

Out []:
[(0, 1), (1, 1), (2, 1), (0, 1), (1, 1), (2, 1)]

編輯:感謝@Divakar

通過直接切片可能稍微快一點: zip(a[:,0], a[:,1])

暫無
暫無

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

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