微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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)。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐