在行和列中拆分数组

时间:2019-07-02 12:50:59

标签: python list numpy

使用Python 2。

我需要将数组拆分为行和列,但是我似乎没有获得练习中要求的解决方案

import numpy as np
a = np.array([[5, 0, 3, 3],
 [7, 9, 3, 5],
 [2, 4, 7, 6],
 [8, 8, 1, 6]])

到目前为止,我具有这些功能

def _rows(a):
    print("array:"+ str(a[:,]))
_rows(a)
def _col(a):
    alt=a.T
    print ("array:"+ str(alt[:,]))
_col(a)

但是我需要返回一个列表,当我使用list()函数时,它会将每个单独的字符分隔开

我需要的结果是:

[array([5, 0, 3, 3]), array([7, 9, 3, 5]), array([2, 4, 7, 6]), array([8, 8, 1, 6])]

[array([5, 7, 2, 8]), array([0, 9, 4, 8]), array([3, 3, 7, 1]), array([3, 5, 6, 6])]

2 个答案:

答案 0 :(得分:8)

您可以使用以下方法将行和列解压缩为列表:

res1, res2 = [*a], [*a.T]

print(res1)

[array([5, 0, 3, 3]),
 array([7, 9, 3, 5]),
 array([2, 4, 7, 6]),
 array([8, 8, 1, 6])]

print(res2)

[array([5, 7, 2, 8]),
 array([0, 9, 4, 8]),
 array([3, 3, 7, 1]),
 array([3, 5, 6, 6])]

Extended iterable unpacking是python 3.0中引入的,对于较旧的版本,您可以像@ U9-Forward的答案中那样调用列表构造函数

答案 1 :(得分:2)

好像您在使用Python 2:

>>> l1, l2 = list(a), list(a.T)
>>> l1
[array([5, 0, 3, 3]), array([7, 9, 3, 5]), array([2, 4, 7, 6]), array([8, 8, 1, 6])]
>>> l2
[array([5, 7, 2, 8]), array([0, 9, 4, 8]), array([3, 3, 7, 1]), array([3, 5, 6, 6])]
>>>