zoukankan      html  css  js  c++  java
  • Python之Numpy数组拼接,组合,连接

    转自:https://www.douban.com/note/518335786/?type=like

    ============改变数组的维度==================
    已知reshape函数可以有一维数组形成多维数组
    ravel函数可以展平数组
    b.ravel()
    flatten()函数也可以实现同样的功能
    区别:ravel只提供视图view,而flatten分配内存存储

    重塑:

    用元祖设置维度
    >>> b.shape=(4,2,3)
    >>> b
    array([[ 0, 1, 2],
            [ 3, 4, 5],

           [ 6, 7, 8],
            [ 9, 10, 11],

           [12, 13, 14],
            [15, 16, 17],

           [18, 19, 20],
            [21, 22, 23]])

    转置:
    >>> b
    array([0, 1],
           [2, 3])
    >>> b.transpose()
    array([0, 2],
           [1, 3])

    =============数组的组合==============
    >>> a
    array([0, 1, 2],
           [3, 4, 5],
           [6, 7, 8])
    >>> b = a*2
    >>> b
    array([ 0, 2, 4],
           [ 6, 8, 10],
           [12, 14, 16])

    1.水平组合
    >>> np.hstack((a,b))
    array([ 0, 1, 2, 0, 2, 4],
           [ 3, 4, 5, 6, 8, 10],
           [ 6, 7, 8, 12, 14, 16])
    >>> np.concatenate((a,b),axis=1)
    array([ 0, 1, 2, 0, 2, 4],
           [ 3, 4, 5, 6, 8, 10],
           [ 6, 7, 8, 12, 14, 16])

    2.垂直组合
    >>> np.vstack((a,b))
    array([ 0, 1, 2],
           [ 3, 4, 5],
           [ 6, 7, 8],
           [ 0, 2, 4],
           [ 6, 8, 10],
           [12, 14, 16])
    >>> np.concatenate((a,b),axis=0)
    array([ 0, 1, 2],
           [ 3, 4, 5],
           [ 6, 7, 8],
           [ 0, 2, 4],
           [ 6, 8, 10],
           [12, 14, 16])

    3.深度组合:沿着纵轴方向组合
    >>> np.dstack((a,b))
    array([[ 0, 0],
            [ 1, 2],
            [ 2, 4],

           [ 3, 6],
            [ 4, 8],
            [ 5, 10],

           [ 6, 12],
            [ 7, 14],
            [ 8, 16]])

    4.列组合column_stack()
    一维数组:按列方向组合
    二维数组:同hstack一样

    5.行组合row_stack()
    以为数组:按行方向组合
    二维数组:和vstack一样

    6.==用来比较两个数组
    >>> a==b
    array([ True, False, False],
           [False, False, False],
           [False, False, False], dtype=bool)
    #True那个因为都是0啊

    ==================数组的分割===============
    >>> a
    array([0, 1, 2],
           [3, 4, 5],
           [6, 7, 8])
    >>> b = a*2
    >>> b
    array([ 0, 2, 4],
           [ 6, 8, 10],
           [12, 14, 16])

    1.水平分割(难道不是垂直分割???)
    >>> np.hsplit(a,3)
    [array([0],
           [3],
           [6]),
     array([1],
           [4],
           [7]),
    array([2],
           [5],
           [8])]
    split(a,3,axis=1)同理达到目的

    2.垂直分割
    >>> np.vsplit(a,3)
    [array([0, 1, 2]), array([3, 4, 5]), array([6, 7, 8])]

    split(a,3,axis=0)同理达到目的

    3.深度分割
    某三维数组:::
    >>> d = np.arange(27).reshape(3,3,3)
    >>> d
    array([[ 0, 1, 2],
            [ 3, 4, 5],
            [ 6, 7, 8],

           [ 9, 10, 11],
            [12, 13, 14],
            [15, 16, 17],

           [18, 19, 20],
            [21, 22, 23],
            [24, 25, 26]])

    深度分割后(即按照深度的方向分割)
    注意:dsplite只对3维以上数组起作用
    raise ValueError('dsplit only works on arrays of 3 or more dimensions')
    ValueError: dsplit only works on arrays of 3 or more dimensions

    >>> np.dsplit(d,3)
    [array([[ 0],
            [ 3],
            [ 6],

           [ 9],
            [12],
            [15],

           [18],
            [21],
            [24]]), array([[ 1],
            [ 4],
            [ 7],

           [10],
            [13],
            [16],

           [19],
            [22],
            [25]]), array([[ 2],
            [ 5],
            [ 8],

           [11],
            [14],
            [17],

           [20],
            [23],
            [26]])]

    ===================数组的属性=================
    >>> a.shape #数组维度
    (3, 3)
    >>> a.dtype #元素类型
    dtype('int32')
    >>> a.size #数组元素个数
    9
    >>> a.itemsize #元素占用字节数
    4
    >>> a.nbytes #整个数组占用存储空间=itemsize*size
    36
    >>> a.T #转置=transpose
    array([0, 3, 6],
           [1, 4, 7],
           [2, 5, 8])

  • 相关阅读:
    文本框只能填数字
    Win7 IIS 配置错误:不能在此路径中使用此配置节。如果在父级别上锁定了该节,便会出现这种情况。锁定是默认设置的
    C#中小数点后保留两位小数,四舍五入的函数及使用方法(转)
    数据库中where与having区别
    NET Runtime version 2.0.50727.42
    C盘文件过大,C盘空间莫名丢失,pagefile.sys文件
    VS2008水晶报表变两页(重装系统后)
    win8 IIS配置
    从程序员到项目经理(5):程序员加油站 -- 懂电脑更要懂人脑
    从程序员到项目经理(4):程序员加油站 -- 不是人人都懂的学习要点
  • 原文地址:https://www.cnblogs.com/huangshiyu13/p/6672828.html
Copyright © 2011-2022 走看看