numpy创建数组

  • 整理了并简述了比较常用的创建方式,如果有很常用的但没有提及的或者描述有误的,欢迎补充,每种创建方式的高级用法可以在该链接中输入相关接口查询
  • 这些接口的输入可以接受很多形式,比如当要求输入为一个一维的数据时,可以由list,tuple,甚至1维的ndarray作为输入
  • 而当要求的输入为一个高维数据时,可以由相互嵌套的数据形式作为输入,如list of tuple,ndarray of tuple,等等,但是应保证嵌套的数据从形式上仍然是一个完整的高维数组(如[(1,2),(2)]这就不算是一个规范的高维数组,尽管它可以被解释为[object, object]这样一个形状为(2,)的数组,但仍应尽量避免类似维度上不规范的数组的使用)
  • 这些方法一般都会有可选的dtype参数,可以方便控制数据类型,请自行了解
  1. numpy.array 直接基于现有数据构建数组
    import numpy as np
    np.array([(1.5,2,3), (4,5,6)])
    '''
    array([[ 1.5,  2. ,  3. ],
           [ 4. ,  5. ,  6. ]])
    '''
    
  2. numpy.zeros 创建指定形状的全0数组
    import numpy as np
    np.zeros([3,4])
    '''
    array([[0., 0., 0., 0.],
           [0., 0., 0., 0.],
           [0., 0., 0., 0.]])
    '''
    
  3. numpy.zeros_like 创建与给定参数形状一致的全0数组
    import numpy as np
    np.zeros_like([[1,2,3,4,5],
                   [2,3,4,5,6]])
    '''
    array([[0, 0, 0, 0, 0],
           [0, 0, 0, 0, 0]])
    '''
    
  4. numpy.ones 类似2,创建指定形状的全1数组
  5. numpy.ones_like 类似3,创建与给定参数形状一致的全1数组
  6. numpy.full 根据指定形状和要填充的数据生成数组
    import numpy as np
    np.full([2,3], 2)
    '''
    array([[2, 2, 2],
           [2, 2, 2]])
    '''
    
    np.full([2,3,3], [[1,2,3],
                      [4,5,6],
                      [7,8,9]])
    # 本质上等价于np.zeros([2,3,3]) + [[1,2,3],[4,5,6],[7,8,9]]
    # 由于这涉及到numpy广播机制,需自行了解
    '''
    array([[[1, 2, 3],
            [4, 5, 6],
            [7, 8, 9]],
           [[1, 2, 3],
            [4, 5, 6],
            [7, 8, 9]]])     
    '''            
    
  7. numpy.full_like 生成与给定数组形状一致,且填充了指定数据的数组
    import numpy as np
    np.full_like([[1,2],[3,4],[5,6]], 0)
    '''
    array([[0, 0],
           [0, 0],
           [0, 0]])
    '''
    
    np.full_like([[1,2],[3,4],[5,6]], [0,1])
    '''
    array([[0, 1],
           [0, 1],
           [0, 1]])
    '''
    
  8. numpy.empty 生成指定大小的数组,但是数组中的初始值由该数组对应内存位置的原有数据决定
    import numpy as np
    np.empty([3,3])
    '''
    array([[4.24399158e-314, 8.48798317e-314, 1.27319747e-313],
           [1.69759663e-313, 2.12199580e-314, 6.36598737e-314],
           [1.06099790e-313, 1.48539705e-313, 1.90979621e-313]])
    '''
    
  9. numpy.empty_like 类似3,生成与给定数组形状一致的数组,但是数组中的初始值由该数组对应内存位置的原有数据决定
    import numpy as np
    np.empty_like([[1,1],[1,1],[1,1]])
    '''
    array([[1, 2],
           [3, 4],
           [5, 6]])
    '''
    
  10. numpy.arange 生成指定范围(左闭右开),指定步长(可缺省)的一维数组
    import numpy as np
    np.arange(10)
    '''
    array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
    '''
    
    np.arange(1,10)
    '''
    array([1, 2, 3, 4, 5, 6, 7, 8, 9])
    '''
    
    np.arange(1,10,2)
    '''
    array([1, 3, 5, 7, 9])
    '''
    
    np.arange(1,10,2.1)
    '''
    array([1. , 3.1, 5.2, 7.3, 9.4])
    '''
    
  11. numpy.linspace 根据指定区间和指定采样点数目,生成顺序且均匀分布在该区间中一维数组
    import numpy as np
    np.linspace(0, 10, 9)
    '''
    array([ 0.  ,  1.25,  2.5 ,  3.75,  5.  ,  6.25,  7.5 ,  8.75, 10.  ])
    '''
    
  12. numpy.random.rand 生成指定形状的随机数数组,数组中的数从[0, 1)之间的均匀分布中随机采出
    import numpy as np
    np.random.rand()
    '''
    0.6122234446412983
    '''
    
    np.random.rand(2,2,2)
    # 注意参数是多个整数,而非一个整数序列
    '''
    array([[[0.70223676, 0.81114375],
            [0.92493732, 0.39030043]],
           [[0.38524779, 0.96695166],
            [0.99867137, 0.794594  ]]])
    '''
    
  13. numpy.random.randint 根据整数范围和形状生成随机整数数组
    import numpy as np
    np.random.randint(0,5)
    # 实际上可能生成0/1/2/3/4
    '''
    4
    '''
    
    np.random.randint([1,2],[3,4])
    # 实际上会生成一个形状为(2,)的数组
    # 该数组的第一位整数会从[1,3)中采样,该数组的第二位整数会从[2,4)中采样
    '''
    array([2, 3])
    '''
    
    np.random.randint(0, 5, [2,2])
    # 相当于(2,2)数组中的每一位都是从[0,5)中采样得来
    '''
    array([[4, 0],
           [2, 1]])
    '''
    
    该方法可能涉及到两次广播机制,但是出于实用性可以不用考虑
  • 下面两个可能算是生成矩阵而非生成一般的数组
  1. numpy.eye 根据行数生成单位矩阵
    import numpy as np
    np.eye(4)
    '''
    array([[1., 0., 0., 0.],
           [0., 1., 0., 0.],
           [0., 0., 1., 0.],
           [0., 0., 0., 1.]])
    '''
    
  2. numpy.diag 根据序列生成对角矩阵或根据矩阵截取出主对角线元素序列
    import numpy as np
    np.diag([1,2,3])
    '''
    array([[1, 0, 0],
           [0, 2, 0],
           [0, 0, 3]])
    '''
    
    np.diag([[1,2,3],
             [1,2,3]])
    '''
    array([1, 2])
    '''
    
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值