在绘图或者计算函数值的时候,我们常常需要生成一些序列,比如生成 0~1000 之间的整数。这时,我们经常用到 Numpy 中的 linspace 和 arange 函数。然而稍不注意,两者就容易用错,特别是linspace,现在对两者的用法和区别说明如下,并指出两者容易用错的地方。

1、arange 函数的用法

为了便于分析,我们假设要生成 0~10 间的整数序列 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9],首先 arange 的用法如下:

import numpy as np
x = np.arange(0,10,1) # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9],注意,没有10

这是arange 的用法:arange(起始值,结束值,间隔) ,需要注意的是,结束值(本例中为10)并不包含在生成的序列中

2、linspace 函数的用法

同样,我们可以用 linespace 函数来生成这个序列,它的用法为——linspace(起始值,结束值,起始值和结束值之间的个数) ,这样就可以生成等分间隔的序列。但是,针对上述问题,我们很容易想当然地写出以下代码:

x=np.linspace(0,10,10) # [ 0.        ,  1.11111111,  2.22222222,  3.33333333,  4.44444444,     5.55555556,  6.66666667,  7.77777778,  8.88888889, 10.        ]

实际上这是错误的写法,它生成的序列为 [ 0.        ,  1.11111111,  2.22222222,  3.33333333,  4.44444444,     5.55555556,  6.66666667,  7.77777778,  8.88888889, 10.        ],很显然,不符合我们的预期,那么问题出在哪里呢? 它的问题出在 linespace 函数把结束值也包含在生成的序列中,所以两数之间的间隔就变成了10/9,要解决这个问题,有两种办法:

第一种方法是把 linspace 的结束值设为 9:

x = np.linspace(0,9,10) # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

第二种方法是让linspace 函数生成的序列不包含结束值:

x = np.linspace(0,10,10,endpoint=False) # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

3、总结

1、arange(初始值,结束值,间隔) 生成的序列不包含结束值,linspace(初始值, 结束值, 值的个数) 生成的序列包含结束值。

2、如果要使 linspace 和 arrange 等效,可以用 linspace(初始值, 结束值, 值的个数, endpoint = False). 当然,两者有各自的使用场景,尽量不要混用。arrange 适用于知道序列中相邻两数之间的间隔的情况下,比如生成一定范围内奇数或者偶数的序列。linspace 适合序列长度和序列取值范围已知的情况。比如采样频率为1200 Hz, 也就是说 0~1s 之间有1200 个点。

Numpy 中 linspace 和 arrange 的用法和区别相关推荐

  1. python中multiply函数_python中numpy中的multiply、*、matul 的区别

    numpy中的multiply.*.matul 的区别 1.对于矩阵(matrix)而言,multiply是对应元素相乘,而 *  .np.matmul() 函数 与 np.dot()函数 相当于矩阵 ...

  2. python列表和数组区别java_浅谈numpy中np.array()与np.asarray的区别以及.tolist

    array和asarray都可以将结构数据转化为ndarray,但是主要区别就是当数据源是ndarray时,array仍然会copy出一个副本,占用新的内存,但asarray不会. 1.输入为列表时 ...

  3. numpy中np.array()与np.asarray的区别以及.tolist

    参考numpy中np.array()与np.asarray的区别以及.tolist - 云+社区 - 腾讯云 array和asarray都可以将结构数据转化为ndarray,但是主要区别就是当数据源是 ...

  4. python/numpy中数组array和矩阵matrix的区别

    在numpy中,array(实际上是ndarray,表示多维数组)是可以有多维度的,而matrix只有两个维度,即行和列.所以matrix是array的一种特例,因而它继承了array的所有函数,同时 ...

  5. oracle中drop和delete,oracle中delete drop truncate的用法和区别

    数据库的运维中,经常会遇到delete drop truncate的操作,那么如何去把握它们的用法和区别呢? 比如当数据库空间爆满,已经增长到存储空间单个存储文件的最大值32G.你需要通过一些办法释放 ...

  6. numpy中linspace用法

    linspace的功能最初是从MATLAB中学来的,用此来创建等差数列.近期用Python的时候发现也有这个功能,提供相应功能的是numpy.关于MATLAB中的功能就不再进行赘述了,接下来把我可能用 ...

  7. Perl中use、require的用法和区别

    2019独角兽企业重金招聘Python工程师标准>>> Exporter Module usage                                           ...

  8. 详解在group by分组查询中where 和 having的用法和区别。

    我地都知道sql 中 where 和 having 都是用来筛选条件的关键字. 而且having 一般和group by 一齐使用,   但是where 也可以用group by 一齐使用的. 下面用 ...

  9. 在Linux中su和sudo区别,Linux中su和sudo的用法和区别

    目录 sudo sudo:暂时切换到超级用户模式以执行超级用户权限,提示输入密码时该密码为当前用户的密码,而不是超级账户的密码.缺点是每次执行超级用户权限都要在命令前加上 sudo ,优点是在当前终端 ...

最新文章

  1. iOS 秒数转换成时间,时,分,秒
  2. 《C#高级编程》既不高级,也不基础,东拼西凑的味道十足。。。
  3. Java各种对象(PO,BO,VO,DTO,POJO,DAO,Entity,JavaBean,JavaBeans)的区分
  4. NYOJ 692 Chinese checkers(广搜)
  5. 如何将catia装配件附材料_在网上买的快餐桌椅如何安装?餐厅快餐桌椅安装顺序与流程知识...
  6. 当一个程序员真正掌握算法之后,会变得有多强...
  7. 【笔记】二叉树递归算法和非递归算法的实现 先序/中序/后续遍历 打印结点以及顺序数 构造二叉树
  8. 【codevs1425】最小的N个和,如何像煞笔一样地写堆
  9. Rushcrm:CRM系统怎么让企业如此青睐?
  10. java 中文转首字母_java 中文转成拼音及首字母
  11. linux--封装redhat镜像
  12. Unity3D水下动物模型大集合
  13. 文献翻译:《弱监督学习实现3D人脸重建:从单张图片到图片集》(Accurate 3D Face Reconstruction with Weakly-Supervised Learning)
  14. Filebeat Filter - Dissect/DNS Reverse
  15. 微信公众号Token验证 signature验证
  16. 关于人每天所需热量:2017-3-13
  17. Android实现3DTouch效果
  18. python入门(三)列表、元组、range()、字典
  19. const与指针用法
  20. 流式计算、实时计算和离线计算

热门文章

  1. 计算机信息技术外文文献综述,国内外信息技术与课程整合说  文献综述报告...
  2. 中国大量程序员都是孔乙己,悲催可笑的心态
  3. 经典蓝牙耳机右外壳模具结构解析
  4. 【渝粤教育】国家开放大学2018年秋季 2767T养猪技术 参考试题
  5. 看完这篇 教你玩转渗透测试靶机vulnhub——Noontide
  6. 2020第十一届蓝桥杯软件类Java B组 决赛(国赛)题目+个人答案
  7. 光滑曲线_微分几何笔记(2) —— 曲线的参数化
  8. 企业招聘程序员都在35岁以下,35岁以上的程序员该何去何从!
  9. ClickHouse 相关博客
  10. 华为OD机考真题 -书籍长宽度叠放几本