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]]]
数组创建目前我学到的就到这儿了昂~
下次有新发现再来,嘿嘿,期待大家一起进步!!!
本文介绍了Python中numpy库的数组创建方法,包括np.array、np.arange、np.linspace、np.indices、np.random.rand、np.ones、np.empty和np.zeros。通过实例解析了各函数的用法和注意事项,强调了数据类型的设定以及易混淆的点,如arange与arrange的区别,以及创建全0数组的正确方法。
1111

被折叠的 条评论
为什么被折叠?



