【问题标题】:How to add every four rows as column如何将每四行添加为列
【发布时间】:2018-02-09 17:22:14
【问题描述】:

我有一个像这样的非常大的 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]])

【问题讨论】:

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


    【解决方案1】:

    使用.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]])
    

    【讨论】:

    • 如果第一个数组a只有五个数组怎么办?那我该怎么办?
    • 那将是一个不完整的矩阵。您希望缺少的元素是什么?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-20
    • 1970-01-01
    • 1970-01-01
    • 2012-11-30
    • 2018-09-24
    相关资源
    最近更新 更多