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