zoukankan      html  css  js  c++  java
  • 数据可视化基础专题(45):NUMPY基础(10)数组操作(2) 修改数组维度/连接数组

     1 修改数组维度

    维度描述
    broadcast 产生模仿广播的对象
    broadcast_to 将数组广播到新形状
    expand_dims 扩展数组的形状
    squeeze 从数组的形状中删除一维条目

    numpy.broadcast

    numpy.broadcast 用于模仿广播的对象,它返回一个对象,该对象封装了将一个数组广播到另一个数组的结果。

    该函数使用两个数组作为输入参数,如下实例:

    import numpy as np
     
    x = np.array([[1], [2], [3]])
    y = np.array([4, 5, 6])  
     
    # 对 y 广播 x
    b = np.broadcast(x,y)  
    # 它拥有 iterator 属性,基于自身组件的迭代器元组
     
    print ('对 y 广播 x:')
    r,c = b.iters
     
    # Python3.x 为 next(context) ,Python2.x 为 context.next()
    print (next(r), next(c))
    print (next(r), next(c))
    print ('
    ')
    # shape 属性返回广播对象的形状
     
    print ('广播对象的形状:')
    print (b.shape)
    print ('
    ')
    # 手动使用 broadcast 将 x 与 y 相加
    b = np.broadcast(x,y)
    c = np.empty(b.shape)
     
    print ('手动使用 broadcast 将 x 与 y 相加:')
    print (c.shape)
    print ('
    ')
    c.flat = [u + v for (u,v) in b]
     
    print ('调用 flat 函数:')
    print (c)
    print ('
    ')
    # 获得了和 NumPy 内建的广播支持相同的结果
     
    print ('x 与 y 的和:')
    print (x + y)

    numpy.broadcast_to

    numpy.broadcast_to 函数将数组广播到新形状。它在原始数组上返回只读视图。 它通常不连续。 如果新形状不符合 NumPy 的广播规则,该函数可能会抛出ValueError。

    numpy.broadcast_to(array, shape, subok)

    numpy.expand_dims

    numpy.expand_dims 函数通过在指定位置插入新的轴来扩展数组形状,函数格式如下:

     numpy.expand_dims(arr, axis)

    参数说明:

    • arr:输入数组
    • axis:新轴插入的位置
    import numpy as np
     
    x = np.array(([1,2],[3,4]))
     
    print ('数组 x:')
    print (x)
    print ('
    ')
    y = np.expand_dims(x, axis = 0)
     
    print ('数组 y:')
    print (y)
    print ('
    ')
     
    print ('数组 x 和 y 的形状:')
    print (x.shape, y.shape)
    print ('
    ')
    # 在位置 1 插入轴
    y = np.expand_dims(x, axis = 1)
     
    print ('在位置 1 插入轴之后的数组 y:')
    print (y)
    print ('
    ')
     
    print ('x.ndim 和 y.ndim:')
    print (x.ndim,y.ndim)
    print ('
    ')
     
    print ('x.shape 和 y.shape:')
    print (x.shape, y.shape)

    numpy.squeeze

    numpy.squeeze 函数从给定数组的形状中删除一维的条目,函数格式如下:

    numpy.squeeze(arr, axis)

    参数说明:

    • arr:输入数组
    • axis:整数或整数元组,用于选择形状中一维条目的子集
    import numpy as np
     
    x = np.arange(9).reshape(1,3,3)
     
    print ('数组 x:')
    print (x)
    print ('
    ')
    y = np.squeeze(x)
     
    print ('数组 y:')
    print (y)
    print ('
    ')
     
    print ('数组 x 和 y 的形状:')
    print (x.shape, y.shape)

    2 连接数组

    函数描述
    concatenate 连接沿现有轴的数组序列
    stack 沿着新的轴加入一系列数组。
    hstack 水平堆叠序列中的数组(列方向)
    vstack 竖直堆叠序列中的数组(行方向)

    numpy.concatenate

    numpy.concatenate 函数用于沿指定轴连接相同形状的两个或多个数组,格式如下:

    numpy.concatenate((a1, a2, ...), axis)

    参数说明:

    • a1, a2, ...:相同类型的数组
    • axis:沿着它连接数组的轴,默认为 0

     

    numpy.stack

    numpy.stack 函数用于沿新轴连接数组序列,格式如下:

    numpy.stack(arrays, axis)

    参数说明:

    • arrays相同形状的数组序列
    • axis:返回数组中的轴,输入数组沿着它来堆叠

     

    numpy.hstack

    numpy.hstack 是 numpy.stack 函数的变体,它通过水平堆叠来生成数组。

    import numpy as np
     
    a = np.array([[1,2],[3,4]])
     
    print ('第一个数组:')
    print (a)
    print ('
    ')
    b = np.array([[5,6],[7,8]])
     
    print ('第二个数组:')
    print (b)
    print ('
    ')
     
    print ('水平堆叠:')
    c = np.hstack((a,b))
    print (c)
    print ('
    ')

    numpy.vstack

    numpy.vstack 是 numpy.stack 函数的变体,它通过垂直堆叠来生成数组。

    import numpy as np
     
    a = np.array([[1,2],[3,4]])
     
    print ('第一个数组:')
    print (a)
    print ('
    ')
    b = np.array([[5,6],[7,8]])
     
    print ('第二个数组:')
    print (b)
    print ('
    ')
     
    print ('竖直堆叠:')
    c = np.vstack((a,b))
    print (c)

  • 相关阅读:
    JQ用法
    js查漏补缺【未完】
    VSCode里面HTML添加CSS时没有提示
    CSS查漏补缺【未完】
    HTML查漏补缺 【未完】
    Android Bitmap 全面解析(二)加载多张图片的缓存处理
    android Paint 详解
    Android Bitmap 全面解析(一)加载大尺寸图片
    图片处理框架
    [项目总结]论Android Adapter notifyDataSetChanged与notifyDataSetInvalidated无效原因
  • 原文地址:https://www.cnblogs.com/qiu-hua/p/14965933.html
Copyright © 2011-2022 走看看