zoukankan      html  css  js  c++  java
  • numpy array分割-【老鱼学numpy】

    有合并,就有分割。
    本节主要讲述如何通过numpy对数组进行横向/纵向分割。

    横向/纵向分割数组

    首先创建一个6行4列的数组,然后我们对此数组按照横向进行切割,分成3块,这样每块应该有2行,见例子:

    import numpy as np
    a = np.arange(24).reshape(6, 4)
    print("a=")
    print(a)
    
    print(np.split(a, 3, axis=0))
    

    输出为:

    a=
    [[ 0  1  2  3]
     [ 4  5  6  7]
     [ 8  9 10 11]
     [12 13 14 15]
     [16 17 18 19]
     [20 21 22 23]]
    [array([[0, 1, 2, 3],
           [4, 5, 6, 7]]), 
    
    array([[ 8,  9, 10, 11],
           [12, 13, 14, 15]]), 
    
    array([[16, 17, 18, 19],
           [20, 21, 22, 23]])]
    

    上面的分割中把数组分成了等分的3份,如果我们不想分割成等分的,可以写成如下的方式:

    import numpy as np
    a = np.arange(24).reshape(6, 4)
    print("a=")
    print(a)
    
    print(np.split(a, [3, 5], axis=0))
    
    

    输出为:

    a=
    [[ 0  1  2  3]
     [ 4  5  6  7]
     [ 8  9 10 11]
     [12 13 14 15]
     [16 17 18 19]
     [20 21 22 23]]
    [array([[ 0,  1,  2,  3],
           [ 4,  5,  6,  7],
           [ 8,  9, 10, 11]]), 
    array([[12, 13, 14, 15],
           [16, 17, 18, 19]]), 
    array([[20, 21, 22, 23]])]
    

    这里[3, 5]进行分割的意思是在第3行和第5行出进行切割。

    同理,我们如果把axis设置为1,则可以按照列进行分割,例如,我们把上面的6行4列的数据分割成2列:

    import numpy as np
    a = np.arange(24).reshape(6, 4)
    print("a=")
    print(a)
    
    print(np.split(a, 2, axis=1))
    

    输出:

    a=
    [[ 0  1  2  3]
     [ 4  5  6  7]
     [ 8  9 10 11]
     [12 13 14 15]
     [16 17 18 19]
     [20 21 22 23]]
    [array([[ 0,  1],
           [ 4,  5],
           [ 8,  9],
           [12, 13],
           [16, 17],
           [20, 21]]), array([[ 2,  3],
           [ 6,  7],
           [10, 11],
           [14, 15],
           [18, 19],
           [22, 23]])]
    

    水平分割hsplit

    我们也可以用单独的水平或垂直分割函数对数组进行分割。
    例如把数组水平分割成两列:

    import numpy as np
    a = np.arange(24).reshape(6, 4)
    print("a=")
    print(a)
    
    print(np.hsplit(a, 2))
    
    

    输出:

    a=
    [[ 0  1  2  3]
     [ 4  5  6  7]
     [ 8  9 10 11]
     [12 13 14 15]
     [16 17 18 19]
     [20 21 22 23]]
    [array([[ 0,  1],
           [ 4,  5],
           [ 8,  9],
           [12, 13],
           [16, 17],
           [20, 21]]), array([[ 2,  3],
           [ 6,  7],
           [10, 11],
           [14, 15],
           [18, 19],
           [22, 23]])]
    
    

    垂直分割vsplit

    例如:

    import numpy as np
    a = np.arange(24).reshape(6, 4)
    print("a=")
    print(a)
    
    print(np.vsplit(a, 2))
    
    

    输出为:

    a=
    [[ 0  1  2  3]
     [ 4  5  6  7]
     [ 8  9 10 11]
     [12 13 14 15]
     [16 17 18 19]
     [20 21 22 23]]
    [array([[ 0,  1,  2,  3],
           [ 4,  5,  6,  7],
           [ 8,  9, 10, 11]]), 
    array([[12, 13, 14, 15],
           [16, 17, 18, 19],
           [20, 21, 22, 23]])]
    
  • 相关阅读:
    Springboot开发微信公众号(四)
    Springboot开发微信公众号(三)
    springboot中Scheduled不执行的原因
    static方法里用@Autowire或者@Resource注入的属性
    Spring boot 读取配置文件application.yml (自定义属性值)
    Apache-Flink深度解析-SQL概览
    Apache-Flink深度解析-DataStream-Connectors之Kafka
    Apache-Flink深度解析-JOIN 算子
    Apache-Flink深度解析-TableAPI
    Spark streaming消费Kafka的正确姿势
  • 原文地址:https://www.cnblogs.com/dreampursuer/p/7832900.html
Copyright © 2011-2022 走看看