如何将每四行添加为列

时间:2018-02-09 17:22:15

标签: python python-3.x numpy data-science numpy-broadcasting

我有一个非常大的numpy数组。我怎样才能将其转换为

array([[1, 1, 0, 0, 1, 0, 0, 1],
       [0, 1, 0, 0, 0, 1, 0, 0],
       [0, 0, 1, 0, 1, 1, 0, 0],
       [0, 0, 1, 0, 1, 1, 0, 0],
       [0, 0, 1, 1, 0, 1, 1, 0],
       [0, 0, 1, 1, 0, 1, 1, 0]])

将这两行分成一行?虽然我需要每四行作为一行?这个例子会有所帮助!我搜索了很多地方都找不到合适的解决方案!

array([[1, 1, 0, 0, 1, 0, 0, 1 , 0, 1, 0, 0, 0, 1, 0, 0],
       [0, 0, 1, 0, 1, 1, 0, 0 , 0, 0, 1, 0, 1, 1, 0, 0],
       [0, 0, 1, 1, 0, 1, 1, 0 , 0, 0, 1, 1, 0, 1, 1, 0]])

然后再回到

array([[1, 1, 0, 0, 1, 0, 0, 1],
       [0, 1, 0, 0, 0, 1, 0, 0],
       [0, 0, 1, 0, 1, 1, 0, 0],
       [0, 0, 1, 0, 1, 1, 0, 0],
       [0, 0, 1, 1, 0, 1, 1, 0],
       [0, 0, 1, 1, 0, 1, 1, 0]])

1 个答案:

答案 0 :(得分:4)

使用.reshape()

>>> import numpy as np
>>> a = np.array([[1, 1, 0, 0, 1, 0, 0, 1],
...        [0, 1, 0, 0, 0, 1, 0, 0],
...        [0, 0, 1, 0, 1, 1, 0, 0],
...        [0, 0, 1, 0, 1, 1, 0, 0],
...        [0, 0, 1, 1, 0, 1, 1, 0],
...        [0, 0, 1, 1, 0, 1, 1, 0]])
>>> b = a.reshape(3,16)
>>> b
array([[1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0],
       [0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0],
       [0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 1, 1, 0, 1, 1, 0]])
>>> b.reshape(6,8)
array([[1, 1, 0, 0, 1, 0, 0, 1],
       [0, 1, 0, 0, 0, 1, 0, 0],
       [0, 0, 1, 0, 1, 1, 0, 0],
       [0, 0, 1, 0, 1, 1, 0, 0],
       [0, 0, 1, 1, 0, 1, 1, 0],
       [0, 0, 1, 1, 0, 1, 1, 0]])