NumPy封装了一个新的数据类型ndarray,一个多维数组对象,该对象封装了许多常用的数学运算函数,方便我们进行数据处理以及数据分析,那么如何生成ndarray呢?这里我们介绍生成ndarray的几种方式,如从已有数据中创建;利用random创建;创建特殊多维数组;使用arange函数等。
直接对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)中的列表换成元组也同样适合。
在深度学习中,我们经常需要对一些变量进行初始化,适当的初始化能提高模型的性能。通常我们用随机数生成模块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'>
数据初始化时,有时需要生成一些特殊矩阵,如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')
arange是numpy模块中的函数,其格式为:arange([start,]stop[,step,],dtype=None)。根据start与stop指定的范围,以及step设定的步长,生成一个ndarray,其中start默认为0,步长step可为小数。
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))