• NumPy ndarray合并数组

    在 NumPy 中,合并数组也是最常见的操作之一,下表列举了常见的用于数组或向量合并的方法。

    表1:Num:Py ndarray 数组合并方法
    函数 描述
    np. append() 内存占用大
    np.concatenate() 没有内存问题
    np. stack() 沿着新的轴加入一系列数组
    np.hstack() 堆栈数组垂直顺序(行)
    np.vstack() 堆栈数组垂直顺序(列)
    np.dstack() 堆栈数组按顺序深入(沿第3维)
    np.vsplit() 将数组分解成垂直的多个子数组的列表

    几点说明:

    • append()、concatenate() 以及 stack() 都有一个 axis 参数,用于控制数组的合并方式是按行还是按列。
    • 对于 append() 和 concatenate(),待合并的数组必须有相同的行数或列数(满足一个即可)。
    • stack()、hstack()、dstack() 要求待合并的数组必须具有相同的形状(shape)。

    下面选择一些常用函数进行说明。

    append()

    append() 函数可以合并一维数组:

    import numpy as np
    
    a =np.array([1, 2, 3])
    b = np.array([4, 5, 6])
    c = np.append(a, b)
    print(c)
    # [1 2 3 4 5 6]

    append() 也可以合并多维数组:

    import numpy as np
    
    a =np.arange(4).reshape(2, 2)
    b = np.arange(4).reshape(2, 2)
    # 按行合并
    c = np.append(a, b, axis=0)
    print('按行合并后的结果')
    print(c)
    print('合并后数据维度', c.shape)
    # 按列合并
    d = np.append(a, b, axis=1)
    print('按列合并后的结果')
    print(d)
    print('合并后数据维度', d.shape)

    输出结果:

    按行合并后的结果
    [[0 1]
      [2 3]
      [0 1]
      [2 3]]
    合并后数据维度 (4, 2)
    按列合并后的结果
    [[0 1 0 1]
      [2 3 2 3]]
    合并后数据维度 (2, 4)

    concatenate()

    沿指定轴连接数组或矩阵:

    import numpy as np
    a =np.array([[1, 2], [3, 4]])
    b = np.array([[5, 6]])
    
    c = np.concatenate((a, b), axis=0)
    print(c)
    d = np.concatenate((a, b.T), axis=1)
    print(d)

    输出结果:

    [[1 2]
      [3 4]
      [5 6]]
    [[1 2 5]
      [3 4 6]]

    stack()

    沿指定轴堆叠数组或矩阵:

    import numpy as np
    
    a =np.array([[1, 2], [3, 4]])
    b = np.array([[5, 6], [7, 8]])
    print(np.stack((a, b), axis=0))

    输出结果:

    [[[1 2]
      [3 4]]

    [[5 6]
      [7 8]]]

更多...

加载中...