python中的numpy库的解析第(一)弹 之 数组的创建

本文介绍了Python中numpy库的数组创建方法,包括np.array、np.arange、np.linspace、np.indices、np.random.rand、np.ones、np.empty和np.zeros。通过实例解析了各函数的用法和注意事项,强调了数据类型的设定以及易混淆的点,如arange与arrange的区别,以及创建全0数组的正确方法。

python中的numpy库的解析第(一)弹 之 数组的创建

python中的标准库提供了一个array类型,用于保存数组类型的数据,可是其不能保存多为数据,于是python第三方库—numpy 得到了迅速的发展,接下来我们就开始第一轮的numpy库的解析吧,欢迎大家一起探讨,嘿嘿!!

numpy库常用的数组创建函数

函数描述
np.array([x, y, z], dtype=int)从Python 列表和元组创造数组
np.arange(x, y,i)创建一个由x到y,以i为步长的数组
np.linspace(x,y,n)创建一个x到y,等分成n个元素的数组
np.indices((m,n))创建一个m行n列的矩阵
np.random.rand(m,n)创建一个m行n列的随机数组
np.ones((m,n),dtype)创建一个m行n列的全为1 的数组,dtype为数据类型
np.empty((m,n),dtype)从Python 列表和元组创造数组 ,dtype为数据类型

注意!!在引入numpy库之后开始使用函数

  • 函数np.array([x,y,z],dtype=int)

dtype表示数据类型,如果数组里全为int类型的数据,则显示为int类型,如果其中有一个浮点型,则输出结果全显示为浮点类型


a = np.array([2.1, 3, 4])  # 创造数组
print(a)  #输出结果为[2.1 3.  4. ],2.1为浮点型,则显示结果各个元素为浮点类型

  • .函数np.arange(x,y,i)

在使用此函数过程中,容易将arange写成arrange,这也是特别容易犯的小错误,编写的时候要仔细哦~
这个函数是创建从x到y的数组,且以i为步长。刚开始我理解为分成i等分,结果试验几次发现是错误的。还有就是数组元素的范围在[x,y),可以取到x,不能取到y,下面我们开始看看一些例子吧~


b = np.arange(2, 6, 2)  # 结果为[2 4],从2到6,每隔2就输出一个数据,也就是2,4形成一个数组,6无法取到
print(b)

######################  分割线

b = np.arange(2, 7, 2)  # 结果为[2 4 6] ,可以取到6
print(b)

  • 函数np.linspace(x,y,n)

创建一个从x到y分成n等分的数组,同上无法取到y的值。间隔为( y-x ),分成n等分,间隔大小也就是(y-x)/(n-1),这个不太难理解,那就开始看例子吧~


c = np.linspace(1, 10, 5)  # 运行结果为[ 1.    3.25  5.5   7.75 10.  ]  
#(因为列表中存在浮点数,故所有数据都应转换成浮点数)
print(c)

  • 函数np.indices((m,n))

创建一个m行n列的矩阵,表示为二维的形式。**注意!!是两个括号。**下面例子帮助了解这个函数哦~


d = np.indices((3, 2))  
print(d)
# 运行结果为
# [[[0 0]
#   [1 1]
#   [2 2]]
#
#  [[0 1]
#   [0 1]
#   [0 1]]]

####################

如果掉了一个括号就会报错,如下

d = np.indices(m, n)  

在这里插入图片描述

  • 函数np.random.rand(m,n)

创建一个m行n列的随机数组,数据生成范围为 [ 0,1 ) ,可以取0,无法取到1 ,这还是在我反复试验后得出的结果,可能当时脑子抽了,也没有去百度…
用法和np.random.randn()函数相同,这里就不演示了。把眼光放回np.random.rand()吧~


e = np.random.rand(3, 2)
print(e)

# 运行结果  多组运行结果表明,生成范围在 0~1 之间
# [[0.69346982 0.2283193 ]
# [0.40511287 0.57489835]
# [0.758496   0.72446015]]

# 运行结果
# [[0.54155865 0.13747877]
# [0.66697399 0.3956475 ]
# [0.69033056 0.02191163]]

  • 函数np.ones((m,n),dtype)

创建一个m行n列且内容全为1的数组,数据类型可以自己修改


f = np.ones((3, 2), int)
print(f)

# 运行结果
# [[1 1]
#  [1 1]
#  [1 1]]

  • 函数np.empty((m,n),dtype)

创建一个m行n列的全为 0 的数组???
这个是需要斟酌一下的,因为之前使用的时候没发现什么不对的,结果出来就发现不符合函数的描述,来看看下面例子就大概能明白了。


g = np.empty((3, 2), int)
print(g)

# 运行结果不为0,为一堆特别奇怪的数据

# [[6881356 7471202]
#  [7471201 5243001]
#  [7602273     104]]

可能觉得数据是随机生成的,也确实是随机生成的,使用的时候得给每个值重新定义,否则就会生成随机的数据

看到这里还是想生成一个全为0的数组怎么办?
下面有一个函数可以满足这个需求~

  • np.zeros(shape, dtype=float)

shape :形状,有(n),(m,n)
dtype :数据类型

可生成一个全为 0 的数组或者列表或者矩阵,可以看看以下实例~

g = np.zeros((3, 2), int)
print(g)
# 数组
# 运行结果全为零
# [[0 0]
#  [0 0]
#  [0 0]]
#####################
g = np.zeros(3, int)
print(g)

# 列表
# 运行结果为 [0 0 0]
######################
g = np.zeros((3, 2, 2), int)
print(g)

#矩阵
#运行结果
#[[[0 0]
# [0 0]]

# [[0 0]
#  [0 0]]

#  [[0 0]
#   [0 0]]]

数组创建目前我学到的就到这儿了昂~
下次有新发现再来,嘿嘿,期待大家一起进步!!!

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值