• numpy库函数


    np.newaxis

    索引多维数组的某一列时返回的是一个行向量

    X = np.array([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]])
    X[:, 1]
    #array([2, 6, 10])    % 这里是一个行
    X[:, 1].shape    % X[:, 1] 的用法完全等同于一个行,而不是一个列,
    #(3, )
    

    索引多维数组的某一列时,返回的仍然是列的结构,一种正确的索引方式是:

    X[:, 1][:, np.newaxis]
    #array([[2],
       [6],
       [10]])
    

    如果想实现第二列和第四列的拼接(层叠):

    X_sub = np.hstack([X[:, 1][:, np.newaxis], X[:, 3][:, np.newaxis]])      
              % hstack:horizontal stack,水平方向上的层叠
    X_sub
    #array([[2, 4]
       [6, 8]
       [10, 12]])
    

    当然更为简单的方式还是使用切片:

    X[:, [1, 3]]
    #array([[ 2, 4],
        [ 6, 8],
        [10, 12]])
    

    np.hstack()

      水平(按列顺序)把数组给堆叠起来

    import numpy as np
    a=[1,2,3]
    b=[4,5,6]
    print(np.hstack((a,b)))
    
    输出:[1 2 3 4 5 6 ]
    

      

    import numpy as np
    a=[[1],[2],[3]]
    b=[[1],[2],[3]]
    c=[[1],[2],[3]]
    d=[[1],[2],[3]]
    print(np.hstack((a,b,c,d)))
    
    输出:
    [[1 1 1 1]
     [2 2 2 2]
     [3 3 3 3]]
    

    vstack()

    它是垂直(按照行顺序)的把数组给堆叠起来。

    import numpy as np
    a=[1,2,3]
    b=[4,5,6]
    print(np.vstack((a,b)))
    
    输出:
    [[1 2 3]
     [4 5 6]]
    

      

    import numpy as np
    a=[[1],[2],[3]]
    b=[[1],[2],[3]]
    c=[[1],[2],[3]]
    d=[[1],[2],[3]]
    print(np.vstack((a,b,c,d)))
    
    输出:
    [[1]
     [2]
     [3]
     [1]
     [2]
     [3]
     [1]
     [2]
     [3]
     [1]
     [2]
     [3]]
    

    stack()

    import numpy as np
    a=[[1,2,3],
       [4,5,6]]
    print("列表a如下:")
    print(a)
    
    print("增加一维,新维度的下标为0")
    c=np.stack(a,axis=0)
    print(c)
    
    print("增加一维,新维度的下标为1")
    c=np.stack(a,axis=1)
    print(c)
    
    输出:
    列表a如下:
    [[1, 2, 3], [4, 5, 6]]
    增加一维,新维度下标为0
    [[1 2 3]
     [4 5 6]]
    增加一维,新维度下标为1
    [[1 4]
     [2 5]
     [3 6]]
    

      上面的代码中a列表中的第一个元素为[1,2,3],那么当axis=0的时候,就是在它的中括号外面再加一个中括号,变成[ [1,2,3] ](其实1,2,3之间是没有逗号的,因为stack()函数会先把参数arrays中的每个元素变成numpy的数组,数组之间是没有逗号的,看看上面的代码输出就知道了,这里大家明白就行,我为了方便讲解,下面还会加上逗号),这样最外面那层中括号才代表维度下标为0的那维;当axis=1的时候,就是在里面加个中括号,变成了[ [1],[2],[3] ],这样里面加的那层中括号才代表维度下标为1的那维。同理当axis=0的时候[4,5,6]变成[ [ 4,5,6] ],当axis=1的时候,变成[ [4],[5],[6] ]。下面我们讲如何把增加一维度后的每个元素串起来。

  • 相关阅读:
    as3.0 网络通信
    flash显示html
    [javascript]对象
    hibernate
    远程服务
    [mysql]笔记1
    [笔记]深入剖析Tomcat-tomcat的默认连接器,servlet容器
    [java]关于访问权限
    [笔记]http权威指南(2)
    [笔记]http权威指南
  • 原文地址:https://www.cnblogs.com/xxupup/p/13791620.html
Copyright © 2020-2023  润新知