Pythonnumpy库——linspace()的⽤法
我们可以将 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,对于结果貌似没有什么变化,这个后⾯再补充
接下来我们就通过程序来感受⼀下:
1. 最重要两个参数:start 和 stop
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.        ]
我们发现头尾是我们设置的1和10,但是⼀共分了50份,这是因为这个函数 num参数的默认值为50;
2. 设定份数
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参数设置数据量,如果是按照参数顺序写下来,可以直接写参数值,如果跳了参数,那么就需要注明属性了,这点就不赘述了;
3. 设置是否包含结束点
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]
我们发现将endpoint设置为False,stop就不会被包含进去,那么也可以知道,默认情况下,stop是会被包含进去的;
4. 我想要知道序列的间隔是多少怎么办?
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)
我们可以看见最后的结果是⼀个元组,元组的第⼀个值即为创建的序列,第⼆个值为序列之间的间隔;
5. 设置⽣成序列的数据类型
import numpy as np
linspace numpy
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']

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。