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

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

文章目录
  • 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

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/741124.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-04-28
下一篇2022-04-28

发表评论

登录后才能评论

评论列表(0条)

    保存