簡體   English   中英

將二維 Numpy 數組轉換為一維列的列表

[英]Converting 2D Numpy array to a list of 1D columns

將二維 numpy 數組轉換為一維列列表的最佳方法是什么?

例如,對於數組:

array([[ 0,  5, 10],
       [ 1,  6, 11],
       [ 2,  7, 12],
       [ 3,  8, 13],
       [ 4,  9, 14]])

我想得到:

[array([0, 1, 2, 3, 4]), array([5, 6, 7, 8, 9]), array([10, 11, 12, 13, 14])]

這有效:

[a[:, i] for i in range(a.shape[1])]

但我想知道使用純 Numpy 函數是否有更好的解決方案?

我想不出你需要的任何理由

[array([0, 1, 2, 3, 4]), array([5, 6, 7, 8, 9]), array([10, 11, 12, 13, 14])]

而不是

array([[0, 1, 2, 3, 4], [5, 6, 7, 8, 9], [10, 11, 12, 13, 14]])

您可以通過aT輕松獲得

如果你真的需要一個列表,那么你可以使用list(aT)

這是一種方法:

In [20]: list(a.T)
Out[20]: [array([0, 1, 2, 3, 4]), array([5, 6, 7, 8, 9]), array([10, 11, 12, 13, 14])]

這是另一個:

In [40]: [*map(np.ravel, np.hsplit(a, 3))]
Out[40]: [array([0, 1, 2, 3, 4]), array([5, 6, 7, 8, 9]), array([10, 11, 12, 13, 14])]

只需調用列表函數:

list(a.T)

嗯,這是另一種方式。 (我假設 x 是你原來的二維數組。)

[row for row in x.T]

但是,仍然使用 Python 列表生成器表達式。

暫無
暫無

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

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