栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

NumPy(二):NumPy创建数组的几种方式np.zeros()/ np.ones() /np.arange()/ np.linspace()/ np.indices()

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

NumPy(二):NumPy创建数组的几种方式np.zeros()/ np.ones() /np.arange()/ np.linspace()/ np.indices()

文章目录
  • NumPy创建数组的五种方式
    • 将Python array-like对象转换为Numpy数组
    • Numpy原生数组的创建
      • np.zeros(shape)
      • np.ones(shape)
      • np.arange()
      • np.linspace()
      • np.indices()

NumPy创建数组的五种方式

学习链接:https://www.numpy.org.cn/user/basics/creation.html

  1. 从其他Python结构(比如,列表、元组)转换
  2. numpy原生数组的创建,比如arange、ones、zeros等
  3. 从磁盘读取数据,无论是标准格式还是自定义格式
  4. 通过使用字符串或缓冲区从原始字节创建数组
  5. 使用特殊库函数,比如random

在此只介绍前两个。

将Python array-like对象转换为Numpy数组
  • 通常,在Python中排列成array-like结构的数值数据可以通过使用array()函数转换为数组。主要是列表和元组。

  • 例子:

    import numpy as np
    array1 = np.array([1,2,3,4])   # 将列表转换为数组
    array2 = np.array([1, 2, 3, 4])
    array3 = np.array([[1,2.0],[0,0],(1+1j,3.)]) 
    # 将列表和元组转换为数组(mix of list and tuple)
    array4 = np.array([[1.+0.j,2.+0.j],[0.+0.j,0.+0.j],[1.+1.j,3.+0.j]])
    '''
    array1和array2均为:
    array([1, 2, 3, 4])
    
    array3:
    array([[1.+0.j, 2.+0.j],
           [0.+0.j, 0.+0.j],
           [1.+1.j, 3.+0.j]])
           
    array4:
    array([[1.+0.j, 2.+0.j],
           [0.+0.j, 0.+0.j],
           [1.+1.j, 3.+0.j]])
    '''
    
Numpy原生数组的创建 np.zeros(shape)
  • zeros(shape)将创建一个以指定形状用0填充的数组。默认的dtype是float64。

    import numpy as np
    array = np.zeros((2,3))
    
    '''array:
    array([[1,2,3],[4,5,6]])
    '''
    
np.ones(shape)
  • ones(shape)将创建一个以指定形状用1填充的数组。其他方面与zeros相同。

    import numpy as np
    array = np.ones((2,3))
    
    '''array:
    array([[1., 1., 1.],
           [1., 1., 1.]])
    '''
    
np.arange()
  • arange()将创建一个有规律递增或递减的数组。

    array1 = np.arange(10)  # 默认数据类型为int32
    array2 = np.arange(2,10,dtype=np.float)
    array3 = np.arange(0,11,2)
    array4 = np.arange(10,0,-2)
    '''输出结果
    array1:
    array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
    
    array2:
    array([2., 3., 4., 5., 6., 7., 8., 9.])
    
    array3:
    array([ 0,  2,  4,  6,  8, 10])
    
    array4:
    array([10,  8,  6,  4,  2])'''
    

    np.arange()函数:

    • 一个参数时:np.arange(a),返回一个在区间[0, a)内递增的数组,步长为默认值1。
    • 两个参数时:np.arange(a,b),返回一个在区间[a, b)内递增的数组,步长为默认值1。
    • 三个参数时:np.arange(a,b,c),返回一个在区间[a, b)内递增的数组,步长为c。
np.linspace()
  • linspace()将创建具有指定数量元素的数组,并在指定的开始值和结束值之间平均间隔。

    array1 = np.linspace(1.,4.,6)
    # array1:array([1. , 1.6, 2.2, 2.8, 3.4, 4. ])
    
    array2 = np.linspace(1.,4.,6,endpoint=True)
    # array2:array([1. , 1.6, 2.2, 2.8, 3.4, 4. ])
    
    array3 = np.linspace(1.,4.,6,endpoint=False)
    # array3:array([1. , 1.5, 2. , 2.5, 3. , 3.5])
    # 可以理解为在区间[1., 4.]之间均匀分为7(即num+1)个数据,删除4.返回前六个数据构成的数组。
    

    np.linspace()函数:

    • 语法:np.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None, axis=0)
    • 返回在 [start, stop] 之间均匀间隔的数据
    • start、stop分别表示开始值和结束值
    • num:生成数组的元素数量,默认为50
    • endpoint:True则包含stop;False则不包含stop。默认endpoint=True
    • retstep:即如果为True则结果会给出数据间隔)
    • dtype:输出数组类型
    • axis:0(默认)或-1
np.indices()
  • indices()返回一个给定形状数组的序号网格索引数组,可以用于提取数组元素或对数组进行切片使用。

    • 语法:np.indices(dimensions, dtype, sparse=False)
    • dimensions:网格的形状(整数序列)
    • dtype:数据类型
    • sparse:返回网格的稀疏表示,而不是密集表示。默认值是False。
    • sparse=False时,返回一个网格索引数组grid.shape = (len(dimensions), ) + tuple(dimensions)。
    • sparse=True时,返回数组的元素
    import numpy as np 
    x = np.arange(20).reshape((5,4))
    dense_grid = np.indices((2,3))                  
    #返回一个2x3网格序列,密集分布,每个行号和列号一一对应,表示一个位置的元素。
    sparse_grid  = np.indices((2,3),sparse= True)   
    #返回一个松散排布的2x3网格的行分布和列分布元组,行号和列号不是一一对应,一个行号对应多个列号。
     
    # 显示错误:indices() got an unexpected keyword argument 'sparse'
    # 原因可能是numpy版本问题,待更新后再尝试
     
    
    print("x:n",x)
    print("x.shape:",x.shape)
    

    参考文章:

    https://blog.csdn.net/daimashiren/article/details/111127432

    https://vimsky.com/examples/usage/numpy-indices-function-python.html

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/835156.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号