机器学习代码基础(2)--NumPy速成
1.2 NumPy速成
numpy为scipy提供了基本的数据结构和运算,其中最主要的是ndarray多维数组,它提供了高效的适量运算功能。
1.2.1创建数组
#根据列表创建数组 import numpy as np myarray = np.array([1,2,3]) print(myarray) print(myarray.shape) #创建多维数组 myarray = np.array([[1,2,3],[2,3,4],[3,4,5]]) print(myarray) print(myarray.shape) #创建特殊的数组 #0数组 array1 = np.zeros((5,5)) print(array1) #1数组 array2 = np.ones((5,5)) print(array2) #指定值的数组 array3 = np.full((5,5),100) print(array3) #单位数组 array4 = np.eye(5) print(array4)
1.2.2访问数据
可以通过数组的下标访问某一行,也可以访问某一列。
print(myarray) print(myarray[0]) print(myarray[-1]) print(myarray[:,2]) print(myarray[1,2])
1.2.3算术运算
使用Numpy的ndarray数组可以直接进行算术运算
(1) 向量与向量
import numpy as np myarray1 = np.array([[1,2,3],[2,3,4],[3,4,5]]) myarray2 = np.array([[11,21,32],[21,31,41],[31,41,51]]) print(myarray1 + myarray2) print(myarray1 - myarray2) print(myarray2 * myarray1) print(myarray1 / myarray2)
(2) 向量与标量
print(myarray1 + 2) print(myarray1 - 2) print(myarray1 * 2) print(myarray1 / 2)
(3)矩阵相关
import numpy as np import numpy.linalg as lg a = np.array([[-2,1],[4,-3]]) print(a.transpose()) print(lg.inv(a)) print(np.dot(a,lg.pinv(a)))
(4)数组的形状改变与堆叠
数组形状的改变:使用Numpy,我们可以方便的更改数组的形状,比如使用reshape()、flatten()函数等。
import numpy as np a = np.arange(10) print(a) b = a.reshape(2,5) print(b) c = b.flatten() print(c)
(5)数组堆叠
从深度看,数组既可以横向叠放,也可以竖向叠放。因此,我们我们对数组进行堆叠,Numpy数组对堆叠包含以下几个函数:hstack(),vstack()
import numpy as np a = np.random.rand(3,3) b = np.ones((3,1)) c = np.hstack((b,a)) print(c) b = np.ones((1,3)) c = np.vstack((b,a)) print(c)