python numpy之数组创建

209 阅读5分钟

image.png

「这是我参与2022首次更文挑战的第5天,活动详情查看:2022首次更文挑战

复习与回顾

众所周知,具有强大多维数据计算功能的numpy 模块,截止到目标已经发布到1.22.1版本啦。

  • numpy 特点

    numpy 官网介绍中,概括的总结numpy 库主要有几大特点:

    • numpy 库拥有强大的ndarray对象,使之能够在矢量化、索引和广播功能快速通用。
    • numpy 是数学和科学领域中占据主导,提供全面的数学函数、随机数生产器、线性代数例程等
    • numpy 支持多种硬件与计算平台,且可以与CPU、数据库进行分布是部署
    • numpy 底层是通过C代码支撑,让其具有良好的高效性
    • numpy 上手容易,可以覆盖从初级者到科学研究员等使用
    • numpy 本身是开源的,大量使用者不断优化其现有功能
  • numpy 功能点

    开源的 numpy 库,经过前面的学习已经对numpy主要的特性 ndarry对象广播规则视图与副本,认识 numpy 相关常用方法。

    image.png

  • numpy 使用第一步

    • 当我们对 numpy 库介绍、功能等有了清晰的了解后,我们就要着手开始学习 numpy 相关算术运算等方法。

    • 在学习使用numpy 方法,我们都知道 numpy 核心是 array 数据结构,所有我们要先创建numpy 数组对象。

    • numpy 库创建数组有哪些方式呢?

      • ndarray构造器创建数组
      • 指定数组形状创建数组
      • 现有的数组创建数组
      • 指定范围创建数组
      • 随机数据创建数组

    本期我们将学习numpy 库数组创建方法,Let's go~

1. ndarray构造器创建数组

  • numpy.array 创建

    numpy.array 调用的是numpy 库底层的ndarray 对象进行创建数组,也是我们常用的方法之一。

    array(p_object, dtype=None, copy=True, order='K', subok=False, ndmin=0)
    
    参数意义
    p-object数组或者嵌套的数列
    dtype数组元素的数据类型(可选,如int32,float64)
    copy布尔类型,拷贝对象。默认是可拷贝的
    order数组的样式,可选值:K-列方向,C-行方向,A-任意方向
    subok返回一个基类类型的数组
    ndmin数组的维度
  • numpy.array 应用

    • 创建1维数组

      >>> arr = np.array([1,2,3])
      >>> arr
      array([1, 2, 3])
      
    • 创建多维数组

      >>> arr2 = np.array([[0,2],[3,4]])
      >>> arr2
      array([[0, 2],
             [3, 4]])
      >>>
      
    • 指定维度ndmin创建

      >>> arr3 = np.array([1,2,3],ndmin=3)
      >>> arr3
      array([[[1, 2, 3]]])
      
    • 指定数组元素数据类型dtype 创建

      >>> arr4 = np.array([1,2,3],dtype=float)
      >>> arr4
      array([1., 2., 3.])
      >>>
      
      

2. 指定数组形状创建数组

  • numpy.empty 创建未初始化的数组

    numpy.empty(shape, dtype = float, order = 'C')
    
    参数意义
    shape数组形状
    dtype数组元素数据类型
    order排序方式,可选值C-行优先,F-列优先
    >>> empty = np.empty([1,2,3,4],dtype=int)
    >>> empty
    array([[[[0, 0, 0, 0],
             [0, 0, 0, 0],
             [0, 0, 0, 0]],
    
            [[0, 0, 0, 0],
             [0, 0, 0, 0],
             [0, 0, 0, 0]]]])
    >>>
    
    
  • numpy.zeros 创建元素为0的数组

    numpy.zeros(shape, dtype = float, order = 'C')
    

    numpy.zeros 方法参数与empty 方法一样

    image.png

    >>> zeros = np.zeros(3)
    >>> zeros
    array([0., 0., 0.])
    >>>
    
  • numpy.ones 创建元素为1的数组

    numpy.ones(shape, dtype = None, order = 'C')
    

    numpy.ones 方法参数与empty 方法一样

    >>> ones = np.ones(3)
    >>> ones
    array([1., 1., 1.])
    >>>
    
    

3. 现有的数组创建数组

  • numpy.asarray 创建数组

    numpy.asarray 方法在_asarray.py文件中被装饰器set_module("numpy")加载,同样和 numpy.array()方法类似

    image.png

    numpy.asarray(a, dtype = None, order = None)
    
    参数意义
    a传入任意数据,类型可以为list,tuple,ndarray
    dtype数组元素数据类型
    order排序方式,可选值C-行优先,F-列优先
    • 列表转换成 ndarray

      >>> asar = np.asarray([1,2,3])
      >>> asar
      array([1, 2, 3])
      >>>
      
      
    • 多维数组创建

      >>> a = np.array([(1.0, 2), (3.0, 4)], dtype='f4,i4').view(np.recarray)
      >>> np.asarray(a) is a
      False
      >>> np.asanyarray(a) is a
      True
      
  • numpy.frombuffer 创建动态数组

    numpy.frombuffer 方法是 _mulitarray_umath.py 文件中方法,以数据流的形式转换成ndarray对象

    numpy.frombuffer(buffer, dtype = float, count = -1, offset = 0)
    

    image.png

    参数意义
    buffer数据流的方式读入的对象
    dtype数组元素数据类型
    count读取的数据数量,默认为-1
    offset读取的数据流的起始位置,默认为0
    >>> buffer = np.frombuffer(b"hellojuejin",dtype="S1")
    >>> buffer
    array([b'h', b'e', b'l', b'l', b'o', b'j', b'u', b'e', b'j', b'i', b'n'],
          dtype='|S1')
    
  • numpy.fromiter 创建一维数组

    numpy.fromiter 方法也是 _mulitarray_umath.py 文件中方法,可迭代对象创建ndarray对象,返回一维数组

    image.png

    numpy.fromiter(iterable, dtype, count=-1)
    
    参数意义
    iterable可迭代对象
    dtype数组元素数据类型
    count读取的数据数量,默认为-1
    >>> item = np.fromiter((x for x in range(5)),float)
    >>> item
    array([0., 1., 2., 3., 4.])
    >>>
    
    

4. 指定范围创建数组

  • numpy.arange 创建

    numpy.arange 指定范围创建返回ndarray对象,方法格式如下:

    numpy.arange(start, stop, step, dtype)
    

    我们可以在_multiarray_umath.py 中找该方法的介绍和实现过程。

    我们可以指定起始和步长就可以得到ndarray对象

    image.png

    参数意义
    start开始值,默认为0
    stop终止值
    step间隔值
    dtype数组元素数据类型
    >>> import numpy as np
    >>> ar = np.arange(3,10)
    >>> ar
    array([3, 4, 5, 6, 7, 8, 9])
    >>> 
    
  • numpy.linspace 创建等差数列数组

    numpy.linspace 方法创建一组等差数列的ndarray对象。

    np.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None)
    

    该方法在 function_base.py 文件里,由@array_function_dispatch(_linspace_dispatcher)装饰器进行修饰的

    image.png

    参数意义
    start开始值,默认为0
    stop终止值
    num间隔值,默认50
    endpoint是否包含终止值,默认包含
    retstep是否显示元素数据间距,默认是不显示的
    dtype数组元素数据类型

    我们来看一下,创建一个3~19的范围的等差数列并返回数组对象

    >>> line = np.linspace(3,19,3) 
    >>> line
    array([ 3., 11., 19.])
    >>> 
    
    
  • numpy.logspace 创建等比数列数组

    numpy.logspace 方法在指定的数据范围内创建一组等比数列数组对象。

    np.logspace(start, stop, num=50, endpoint=True, base=10.0, dtype=None)
    

    image.png

    同理与numpy.linspace 方法一样属于 function_base 里的方法

    >>> log = np.logspace(3,19,3)
    >>> log
    array([1.e+03, 1.e+11, 1.e+19])
    >>> 
    
    

5. 随机数据创建数组

  • numpy.random 模块方法

    numpy.random 模块在mtrad.py文件中,调用random函数方法生成随机数据组成的数组

    方法意义
    numpy.random.rand(d0,d1,…,dn)创建0~1的数据
    numpy.random.randint(low,high)创建给定范围的随机整数
    numpy.random.random_integers(low,high)返回给定范围随机整数
    numpy.random.random(size)随机生成0,1之间的浮点数

总结

本期,我们对numpy 创建数组方法进行学习,实操常用的方法。

大家在实际使用过程中,多多使用。

以上是本期内容,欢迎大佬们点赞评论,下期见~~