我们可以将 linspace() 函数理解成是用来创建一个等差数列的,或者说将一个区间的数值等分成N份,下面举个栗子:
将 1~10 等分成10份,那么最后的结果是怎样的呢?
1,2,3,4,5,6,7,8,9,10
最后创建出来的就是这样一个等差序列;
我们还是首先看一下函数原型是怎样的:
英文好的自己看,不好的随着我一起看下去;我们发现这个函数一共有7个参数,除了前两个,其他的都有初始值了,那么他们分别代表什么意思呢?
- start:数据的起始点,即区间的最小值
- stop:数据的结束点,即区间的最大值
- num:数据量,可以理解成分割了多少份
- endpoint:说明是否包含结束点
- retstep:是否给出数据间隔,即如果是True,那么不仅会创建数据序列,在最后还会给出数据间隔是多少
- dtype:指定序列的数据类型
- axis:其实这个参数我也没搞懂是什么意思,只知道值为0或者-1,对于结果貌似没有什么变化,这个后面再补充
接下来我们就通过程序来感受一下:
- 最重要两个参数:start 和 stop
我们发现头尾是我们设置的1和10,但是一共分了50份,这是因为这个函数 num参数的默认值为50;import numpy as np print(np.linspace(1,10)) # 输出结果: # [ 1. 1.18367347 1.36734694 1.55102041 1.73469388 1.91836735 # 2.10204082 2.28571429 2.46938776 2.65306122 2.83673469 3.02040816 # 3.20408163 3.3877551 3.57142857 3.75510204 3.93877551 4.12244898 # 4.30612245 4.48979592 4.67346939 4.85714286 5.04081633 5.2244898 # 5.40816327 5.59183673 5.7755102 5.95918367 6.14285714 6.32653061 # 6.51020408 6.69387755 6.87755102 7.06122449 7.24489796 7.42857143 # 7.6122449 7.79591837 7.97959184 8.16326531 8.34693878 8.53061224 # 8.71428571 8.89795918 9.08163265 9.26530612 9.44897959 9.63265306 # 9.81632653 10. ]
- 设定份数
import numpy as np print(np.linspace(1,10,10)) print(np.linspace(1,10,num=10)) # 输出结果: # [ 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.]
我们可以通过 num参数设置数据量,如果是按照参数顺序写下来,可以直接写参数值,如果跳了参数,那么就需要注明属性了,这点就不赘述了;
- 设置是否包含结束点
我们发现将endpoint设置为False,stop就不会被包含进去,那么也可以知道,默认情况下,stop是会被包含进去的;import numpy as np print(np.linspace(1,10,10,endpoint=False)) # 输出结果: # [1. 1.9 2.8 3.7 4.6 5.5 6.4 7.3 8.2 9.1]
- 我想要知道序列的间隔是多少怎么办?
我们可以看见最后的结果是一个元组,元组的第一个值即为创建的序列,第二个值为序列之间的间隔;import numpy as np a = np.linspace(1,10,10,retstep=True) print(a) # 输出结果: # (array([ 1., 2., 3., 4., 5., 6., 7., 8., 9., 10.]), 1.0)
- 设置生成序列的数据类型
import numpy as np print(np.linspace(1,10,10,dtype='int')) print(np.linspace(1,10,10,dtype='str')) # 输出结果: # [ 1 2 3 4 5 6 7 8 9 10] # ['1.0' '2.0' '3.0' '4.0' '5.0' '6.0' '7.0' '8.0' '9.0' '10.0']