python中numpy.concatenate()和numpy.reshape()函数的使用



numpy.concatenate()函数

        numpy.concatenate() 是一种数组拼接方法,将具有相同结构的array序列拼接成一个array。
        numpy提供了numpy.concatenate((a1,a2,…), axis=0)函数,能够一次完成多个数组的拼接,其中a1,a2,…是数组类型的参数,axis是拼接方向,默认值为0,拼接方向可以理解为拼接完成后数量发生变化的方向。axis=0,拼接方向为横轴,需要纵轴结构相同,表示对应列的数组拼接;axis=1,拼接方向为纵轴,需要横轴结构相同,表示对应行的数组拼接;axis=None,则数组在使用前被展平。
        numpy.append()和numpy.concatenate()均为numpy数组拼接方法,这两个函数从运行时间方面进行比较的话, numpy.concatenate()效率更高,适合大规模的数组拼接。

  • examples1:
    >>> import numpy as np
    >>> a = np.array([1, 2])
    >>> b = np.array([3, 4])
    >>> np.concatenate((a, b), axis=0)
    array([[1,2,3,4])

  • examples2:
    >>> import numpy as np
    >>> a = np.array([[1, 2], [3, 4]])
    >>> b = np.array([[5, 6]])
    >>> np.concatenate((a, b), axis=0)
    array([[1, 2],
               [3, 4],
               [5, 6]])
    >>> np.concatenate((a, b.T), axis=1)
    array([[1, 2, 5],
               [3, 4, 6]])
    >>> np.concatenate((a, b), axis=None))
    array([1, 2, 3, 4, 5, 6])

numpy.reshape()函数

        numpy.reshape() 用于重塑数组的形状,作用是在不改变矩阵的数值的前提下修改矩阵的形状。
        numpy提供了numpy.reshape(a, newshape, order=‘C’)函数,其中,a:需要被重塑的数组;newshape:整数或整数数组,新的形状应该与原来的形状兼容,即行数和列数相乘后等于a中元素的数量;order:{‘C’,‘F’,‘A’}可选,使用此索引顺序读取a的元素,并使用此索引顺序将元素放置到重新形成的数组中。

  • 简单使用
    >>> import numpy as np
    >>> a = np.array([[1, 2], [3, 4]])
    >>> a.reshape(1, 4)
    array([[1, 2, 3, 4]])

  • 缺省值-1:np.reshape里面的-1代表不知道要给行(或者列)设置为几,reshape函数会根据原矩阵的形状自动调整。
    >>> import numpy as np
    >>> z = np.array([[1, 2, 3, 4],
                                   [5, 6, 7, 8]])

    >>> z.reshape(-1)
    array([ 1, 2, 3, 4, 5, 6, 7, 8])
    >>> z.reshape(-1, 1)
    array([[ 1],
               [ 2],
               [ 3],
               [ 4],
               [ 5],
               [ 6],
               [ 7],
               [ 8]])
    >>> z.reshape(-1, 2)
    array([[ 1, 2],
               [ 3, 4],
               [ 5, 6],
               [ 7, 8]])
               
           z.reshape(-1, 1)是说,我们不知道新z的行数是多少,但是想让z变成只有一列,行数不知的新数组,通过z.reshape(-1,1),numpy自动计算出有8行,新的数组shape属性为(8, 1),与原来的(2, 4)匹配。z.reshape(-1, 2),行数未知,列数等于2,reshape后的shape等于(4, 2)。

上一篇:numpy数组连接方法


下一篇:CONCATENATE函数