Numpy中数组创建函数的辨析

首先推荐Numpy官方的教程,网址

很多人会对数组创建函数的参数中什么时候要用括号np.zeros((2, 3)),什么时候不用括号np.eye(3, 5)感到疑惑,这里对它们统一进行梳理。(按照官方文档的分类方法)

1. 一维数组创建函数

最常用的是np.arange()np.linspace()

在这里插入图片描述

两者都有开始start和结束stop,区别是arange有步长step而linspace有数目num。

实践上,遇到整数时使用np.arange(),遇到浮点数时由于np.arange()会由于舍入误差使得右端取值不确定(左闭右开或左闭右闭),所以会使用np.linspace()

2. 二维数组创建函数

二维数组创建函数,常用的是三个:单位矩阵np.eye()、对角矩阵np.diag() 和三角矩阵np.tri()

>>> np.eye(3)
array([[1., 0., 0.],
       [0., 1., 0.],
       [0., 0., 1.]])
>>> np.eye(3, 5)
array([[1., 0., 0., 0., 0.],
       [0., 1., 0., 0., 0.],
       [0., 0., 1., 0., 0.]])
       
>>> np.diag([1, 2, 3])
array([[1, 0, 0],
       [0, 2, 0],
       [0, 0, 3]])
>>> np.diag([1, 2, 3], 1)
array([[0, 1, 0, 0],
       [0, 0, 2, 0],
       [0, 0, 0, 3],
       [0, 0, 0, 0]])
>>> a = np.array([[1, 2], [3, 4]])
>>> np.diag(a)
array([1, 4])

>>> np.tri(3, 5, 2, dtype=int)
array([[1, 1, 1, 0, 0],
       [1, 1, 1, 1, 0],
       [1, 1, 1, 1, 1]])

注意np.eye()在指定行和列时是不需要加括号的,详细看下文。

3. 一般 ndarray 创建函数

常用的有:全0数组np.zeros()、全1数组np.ones()、空数组np.empty() 、填充数组np.full()。每种函数都有对应的_like函数,传入某个数组就可以参考数组的shape进行构建。创建一维数组的例子如下:
在这里插入图片描述

注意生成的一维数组的shape是(3, ),在矩阵乘法中相当于行向量(1, 3),但是不能像行向量那样进行转置。

在这里插入图片描述

创建二维数组的例子如下:

在这里插入图片描述
留意到只有np.eye()是不加括号的,其他的都要加括号。这是因为np.zeros()np.ones()等传入的第一个参数是shape,而第二个参数是dtype,如果不加括号则会把第一个逗号后的数字误认为是dtype;np.eye()的第二个参数则不是dtype,而是可选的M,所以第一个逗号后的数字是M。

在这里插入图片描述

最后是用随机数创建数组,建议用新的写法,因为更快:

在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值