• numpy-合并与分割


    代码整理

    import numpy as np
    
    ################################### 合并 ###################################
    # hstack vstack 要求矩阵a,b 必须行列数一样, 行=行  列=列
    a = np.floor(10 * np.random.rand(2, 2))
    b = np.floor(10 * np.random.rand(2, 2))
    
    
    ################# hstack #################
    #### hstack()在行上合并
    np.hstack((a, b))
    # array([[ 8.,  5.,  1.,  9.],
    #        [ 1.,  6.,  8.,  5.]])
    
    
    ################# vstack #################
    #### vstack()在列上合并
    np.vstack((a, b))
    # array([[ 8.,  5.],
    #        [ 1.,  6.],
    #        [ 1.,  9.],
    #        [ 8.,  5.]])
    
    print(np.vstack([a, b, b]))        # list 参数
    # [[ 1.  4.]        a
    #  [ 9.  5.]
    #  [ 7.  6.]        b
    #  [ 2.  9.]
    #  [ 7.  6.]        b
    #  [ 2.  9.]]
    print(np.vstack((a, b, b)))         # tuple 参数
    
    
    ################# dstack #################
    #### dstack 在深度上进行合并
    a = np.zeros((3, 3, 1))
    b = np.ones((3, 3, 1))
    c = np.ones((3, 3, 1)) * 3
    
    print(np.dstack([a, b, c]))
    # [[[0. 1. 3.]
    #   [0. 1. 3.]
    #   [0. 1. 3.]]
    #
    #  [[0. 1. 3.]
    #   [0. 1. 3.]
    #   [0. 1. 3.]]
    #
    #  [[0. 1. 3.]
    #   [0. 1. 3.]
    #   [0. 1. 3.]]]
    
    
    # 如果是随意增加一列  按行  row_stack  按列  column_stack
    # print np.row_stack(a, b)
    
    
    ################# concatenate #################
    # def concatenate(arrays, axis=None, out=None)
    a = np.floor(10 * np.random.rand(2, 2))
    b = np.floor(10 * np.random.rand(2, 2))
    print(np.concatenate((a, b)))       ### 默认 axis=0,等价于 vstack
    # [[1. 9.]
    #  [6. 3.]
    #  [4. 5.]
    #  [6. 3.]]
    print(np.concatenate((a, b), axis=1))   ### axis=1,等价于 hstack
    
    
    ################# c_ r_ #################
    a = np.arange(1, 5)
    b = np.arange(2, 6)
    c = np.arange(3, 7)
    
    print(np.c_[a, b, c])   # 按列合并
    # [[1 2 3]
    #  [2 3 4]
    #  [3 4 5]
    #  [4 5 6]]
    
    print(np.r_[a, b, c])   # 按行合并
    # [1 2 3 4 2 3 4 5 3 4 5 6]
    
    
    ################################### 切割 ###################################
    a = np.random.randint(1, 10, size=(2, 5))
    print(np.hsplit(a, 1))          ### 切割成 1 部分
    # [array([[1, 6, 3, 3, 2],
    #        [8, 5, 6, 3, 3]])]
    
    print(np.vsplit(a, 2))          ### 切割成 2 部分
    # [array([[1, 6, 3, 3, 2]]), array([[8, 5, 6, 3, 3]])]
    
    print(np.hsplit(a, [1]))        ### 在行上进行分割,1 代表索引
    # [array([[1],
    #        [8]]), array([[6, 3, 3, 2],
    #        [5, 6, 3, 3]])]
    
    print(np.hsplit(a, [1, 3]))
    # [array([[1],
    #        [8]]), array([[6, 3],
    #        [5, 6]]), array([[3, 2],
    #        [3, 3]])]
    
    print(np.vsplit(a, [1]))
    # [array([[1, 6, 3, 3, 2]]), array([[8, 5, 6, 3, 3]])]

    注意

    numpy 在合并时 行或者列 要保持一致,否则无法合并, 此时可以用 pandas

    x = pd.Series(range(1, 5))          # 
    y = pd.Series(range(2, 5))          # 注意 x y 长度不一致
    print(pd.concat([x, y], axis=1))    # x y 必须是 ’pandas 格式‘
    #    0    1
    # 0  1  2.0
    # 1  2  3.0
    # 2  3  4.0
    # 3  4  NaN     自动填充 Nan
    
    x = np.arange(1, 5)
    y = np.arange(2, 5)
    print(np.vstack((x, y)))            # 报错

    参考资料:

  • 相关阅读:
    NX二次开发-创建直线(起点-向量方向-长度)UF_CURVE_create_line
    NX二次开发-创建圆弧(圆心-半径)UF_CURVE_create_arc
    NX二次开发-UFUN获取直线的两个端点UF_CURVE_ask_line_data
    NX-二次开发创建圆弧(三点圆弧)UF_CURVE_create_arc_3point
    NX二次开发-创建直线UF_CURVE_create_line与NXOpen->CreateLine
    NX二次开发-创建圆弧(起点-终点-半径)UF_CURVE_create_arc_point_point_radius
    NX二次开发-UFUN打开信息窗口UF_UI_open_listing_window()
    NX二次开发-UFUN信息窗口打印UF_UI_write_listing_window
    NX二次开发-UFUN单按钮模态对话框窗口打印uc1601用法
    NX二次开发-UFUN打开二进制STL文件函数UF_STD_open_binary_stl_file
  • 原文地址:https://www.cnblogs.com/yanshw/p/14899368.html
Copyright © 2020-2023  润新知