初入Python数据分析库——Numpy(三)


本篇文章想介绍三个常用的 Numpy函数 给大家。

一、Numpy.arange()

(一)函数说明

numpy.arange(start,stop,step,dtype)
函数作用:生成区间数组

1.start 起始值(包含),默认为0
2.stop 终止值(不包含)
3.step 步长(空格),默认为1
4.dtype 返回ndarray的数据类型,如果没有提供,则会使用输入数据的类型

(二)详细说明

1.start 起始值(包含),默认为0

2.stop 终止值(不包含)

3.step 步长(空格),默认为1

# 示例1:
np.arange(10)

#------------------------
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
# 示例2:
np.arange(3.1)  # 注意,这是浮点型,用法正确

#------------------------
array([0., 1., 2., 3.])

注意1:range(3.1) 是错误的表达!!!
有Python基础的读者看到上面的函数一定会想到 range() 。确实,两者的用法很相似,但是有一点区别,就是 range() 括号里不能有小数出现!!!

注意2:float数值会影响numpy.arange ,这是二进制的运算出现的误差
大家先看看我们下面这段代码。

# 示例3:
np.arange(0.1,0.4,0.1)  

#------------------------
array([0.1, 0.2, 0.3, 0.4])

读者从上文可知,step 应该是不包含终止值的,但是这里却出现了。出现的原因就是:浮点型 会转换成 整型 再加减

# 示例4:
# 起始10,终止值20 步长2
np.arange(10,20,2)

# 起始0,终止值10 步长3
np.arange(0,10,3)

#------------------------
array([10, 12, 14, 16, 18])
array([0, 3, 6, 9])
# 示例4:
np.arange(20,step = 3)   # step 不能省略,原因看下方文字部分

#------------------------
array([ 0,  3,  6,  9, 12, 15, 18])

当 arange() 括号里只出现1个数时,默认是:终止值
当 arange() 括号里只出现2个数时,默认是:起始值+终止值

4.dtype 返回ndarray的数据类型,如果没有提供,则会使用输入数据的类型

x = np.arange(5,dtype = float)
print(x)

#------------------------
[0. 1. 2. 3. 4.]

(三)练习

题目描述:200米的主干道插旗,每隔3米插一面旗。
问题描述:1.最后一面旗会插到终点吗?2.一共插多少面旗子?

a=np.arange(0,200,3)
num = len(np.arange(0,200+1,3))-1
print(num+1)
if a[num] == 200:
    print('Yes!')
else:
    print('No!')
    
#------------------------
67
No!

简单解释一下,有以下三个点需要注意的。

  1. 200+1 :step 不包含终止值,我们手动加1
  2. len(…)-1:-1是因为下方 a[num] 是从 0 开始算起的,索引要 -1
  3. num+1:上面-1,到了下面从1开始算的时候,就要加回来

二、Numpy.linspace()

(一)函数说明

np.linspace(start,stop,num=50,endpoint=True,retstep=False,dtype=None)
函数作用:生成等差数列

1.start 必填项,起始值
2.stop 必填项,终止值(默认包含)
3.num 要生成的等步长的样本数量,默认为50
4.endpoint 如果是True,数列包含stop值,默认情况是True
5.retstep 如果是True,生成的数组中会显示间距,默认情况是True
6.ndarray 的数据类型

(二)详细说明

1.start 必填项,起始值

2.stop 必填项,终止值(默认包含)

3.num 要生成的等步长的样本数量,默认为50

实现原理:(终止值-初始值) / 项数

# 起点1,终点10,数列个数10
a =  np.linspace(1,10,10)
a

#------------------------
array([ 1.,  2.,  3.,  4.,  5.,  6.,  7.,  8.,  9., 10.])
# 实现输出 0  0.5  1  1.5  2   2.5  3   3.5  4
A = np.linspace(0,4,9)
print(A)
B = np.linspace(0,4.1,9)
print(B)

#------------------------
[0.  0.5 1.  1.5 2.  2.5 3.  3.5 4. ]
[0.     0.5125 1.025  1.5375 2.05   2.5625 3.075  3.5875 4.1   ]
ar1 = np.linspace(2.0,3.0,num = 5)
ar1

#------------------------
array([2.  , 2.25, 2.5 , 2.75, 3.  ])

4.endpoint 如果是True,数列包含stop值,默认情况是True

ar1 = np.linspace(2.0,3.0,num = 5,endpoint = False)
ar2 = np.linspace(2.0,3.0,num = 5)
ar1
ar2

#------------------------
array([2. , 2.2, 2.4, 2.6, 2.8])
array([2.  , 2.25, 2.5 , 2.75, 3.  ])

5.retstep 如果是True,生成的数组中会显示间距,默认情况是True

ar3 = np.linspace(2.0,3.0,num = 5,retstep = True)   # 步长
ar4 = np.linspace(2.0,3.0,num = 5,endpoint = False ,retstep =True)
ar3
ar4

#------------------------
(array([2.  , 2.25, 2.5 , 2.75, 3.  ]), 0.25)
(array([2. , 2.2, 2.4, 2.6, 2.8]), 0.2)

值得注意的是,整一个结果是用元组的形式表现出来的。

三、Numpy.logspace()

lonspace() 函数与 linspace() 函数有很多相似的地方,这里就不再赘述,简单讲讲即可。

(一)函数说明

np.logspace(start,stop,num = 50,endpoint = True,base = 10.0,dtype = None)
函数作用:生成等比数列

1.start 必填项,起始值
2.stop 必填项,终止值(默认包含)
3.num 要生成的等步长的样本数量,默认为50
4.endpoint 如果是True,数列包含stop值,默认情况是True
5.base 对数 log 的底数.(base的几次方)
6.ndarray 的数据类型

(二)详细说明

a = np.logspace(1,5,3,base = 2)
b = np.logspace(0,9,10,base = 2)
a
b

#------------------------
array([ 2.,  8., 32.])
array([  1.,   2.,   4.,   8.,  16.,  32.,  64., 128., 256., 512.])

这里说明一下 a 这个等比数列。

  1. 先使用前三个参数,将[1,5]均分为3个数,得到{1,3,5};
  2. 然后利用第4个参数 base = 2(默认是 10 ),得出结果{2^1 ;2^2 ;2^3}(这里也解释了 base 的含义)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值