购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

1.1 生成ndarray的几种方式

NumPy封装了一个新的数据类型ndarray,一个多维数组对象,该对象封装了许多常用的数学运算函数,方便我们进行数据处理以及数据分析,那么如何生成ndarray呢?这里我们介绍生成ndarray的几种方式,如从已有数据中创建;利用random创建;创建特殊多维数组;使用arange函数等。

1.从已有数据中创建

直接对python的基础数据类型(如列表、元组等)进行转换来生成ndarray。

(1)将列表转换成ndarray


import numpy as np
list1 = [3.14,2.17,0,1,2]
nd1 = np.array(list1)
print(nd1)
print(type(nd1))

打印结果:


[ 3.14  2.17  0.    1.    2.  ]
<class 'numpy.ndarray'>

(2)嵌套列表可以转换成多维ndarray


import numpy as np
list2 = [[3.14,2.17,0,1,2],[1,2,3,4,5]]
nd2 = np.array(list2)
print(nd2)
print(type(nd2))

打印结果:


[[ 3.14  2.17  0.    1.    2.  ]
 [ 1.    2.    3.    4.    5.  ]]
<class 'numpy.ndarray'>

如果把(1)和(2)中的列表换成元组也同样适合。

2.利用random模块生成ndarray

在深度学习中,我们经常需要对一些变量进行初始化,适当的初始化能提高模型的性能。通常我们用随机数生成模块random来生成,当然random模块又分为多种函数:random生成0到1之间的随机数;uniform生成均匀分布随机数;randn生成标准正态的随机数;normal生成正态分布;shuffle随机打乱顺序;seed设置随机数种子等。下面我们列举几个简单示例。


import numpy as np

nd5 = np.random.random([3,3])
print(nd5)
print(type(nd5))

打印结果:


[[ 0.88900951  0.47818541  0.91813526]
 [ 0.48329167  0.63730656  0.14301479]
 [ 0.9843789   0.99257093  0.24003961]]
<class 'numpy.ndarray'>

生成一个随机种子,对生成的随机数打乱。


import numpy as np

np.random.seed(123)
nd5_1 = np.random.randn(2,3)
print(nd5_1)
np.random.shuffle(nd5_1)
print("随机打乱后数据")
print(nd5_1)
print(type(nd5_1))

打印结果:


[[-1.0856306   0.99734545  0.2829785 ]
 [-1.50629471 -0.57860025  1.65143654]]

随机打乱后数据为:


[[-1.50629471 -0.57860025  1.65143654]
 [-1.0856306   0.99734545  0.2829785 ]]
<class 'numpy.ndarray'>

3.创建特定形状的多维数组

数据初始化时,有时需要生成一些特殊矩阵,如0或1的数组或矩阵,这时我们可以利用np.zeros、np.ones、np.diag来实现,下面我们通过几个示例来说明。


import numpy as np

#生成全是0的3x3矩阵
nd6 = np.zeros([3,3])
#生成全是1的3x3矩阵
nd7 = np.ones([3,3])
#生成3阶的单位矩阵
nd8= np.eye(3)
#生成3阶对角矩阵
print (np.diag([1, 2, 3]))

我们还可以把生成的数据保存到磁盘,然后从磁盘读取。


import numpy as np
nd9 = np.random.random([5,5])
np.savetxt(X=nd9,fname='./test2.txt')
nd10 = np.loadtxt('./test2.txt')

4.利用arange函数

arange是numpy模块中的函数,其格式为:arange([start,]stop[,step,],dtype=None)。根据start与stop指定的范围,以及step设定的步长,生成一个ndarray,其中start默认为0,步长step可为小数。 36fv38TH2w7ySpU6Yo2EF92Ya6wdn6ilOGMfvjbLvSnK0R9INkablvDzLyxy+2Zf


import numpy as np

print(np.arange(10))
print(np.arange(0,10))
print(np.arange(1, 4,0.5))
print(np.arange(9, -1, -1))

点击中间区域
呼出菜单
上一章
目录
下一章
×