《大数据的Python基础课件第10章numpy与pandas基础.pptx》由会员分享,可在线阅读,更多相关《大数据的Python基础课件第10章numpy与pandas基础.pptx(118页珍藏版)》请在三一办公上搜索。
1、第10章 numpy与pandas基础,1,本章学习目标,熟练掌握numpy数组运算与矩阵运算理解pandas的Series和DataFrame结构熟练掌握pandas读取不同类型数据的方法熟练掌握pandas访问和修改数据的方法熟练掌握缺失值处理方法熟练掌握重复值处理方法熟练掌握异常值处理方法,2,10.1 numpy数组运算与矩阵运算基础,Python扩展库numpy支持N维数组运算、处理大型矩阵、成熟的广播函数库、矢量运算、线性代数、傅里叶变换、随机数生成,并可与C+/Fortran语言无缝结合。,3,10.1.1 数组生成与常用操作,(1)生成数组 np.array(1, 2, 3,
2、4, 5) #把列表转换为数组array(1, 2, 3, 4, 5) np.array(1, 2, 3, 4, 5) #把元组转换成数组array(1, 2, 3, 4, 5) np.array(range(5) #把range对象转换成数组array(0, 1, 2, 3, 4) np.array(1, 2, 3, 4, 5, 6) #二维数组array(1, 2, 3, 4, 5, 6) np.arange(8) #类似于内置函数range()array(0, 1, 2, 3, 4, 5, 6, 7) np.arange(1, 10, 2)array(1, 3, 5, 7, 9),4,1
3、0.1.1 数组生成与常用操作, np.linspace(0, 10, 11) #等差数组,包含11个数array( 0., 1., 2., 3., 4., 5., 6., 7., 8., 9., 10.) np.linspace(0, 10, 11, endpoint=False) #不包含终点array( 0. , 0.90909091, 1.81818182, 2.72727273, 3.63636364, 4.54545455, 5.45454545, 6.36363636, 7.27272727, 8.18181818, 9.09090909) np.logspace(0, 100,
4、 10) #相当于10*np.linspace(0,100,10)array(1.00000000e+000, 1.29154967e+011, 1.66810054e+022, 2.15443469e+033, 2.78255940e+044, 3.59381366e+055, 4.64158883e+066, 5.99484250e+077, 7.74263683e+088, 1.00000000e+100) np.logspace(1,6,5, base=2) #相当于2 * np.linspace(1,6,5)array( 2., 4.75682846, 11.3137085 , 26
5、.90868529, 64. ) np.zeros(3) #全0一维数组array( 0., 0., 0.),5,10.1.1 数组生成与常用操作, np.ones(3) #全1一维数组array( 1., 1., 1.) np.zeros(3,3) #全0二维数组,3行3列array( 0., 0., 0., 0., 0., 0., 0., 0., 0.) np.zeros(3,1) #全0二维数组,3行1列array( 0., 0., 0.) np.zeros(1,3) #全0二维数组,1行3列array( 0., 0., 0.) np.ones(3,3) #全1二维数组array( 1.
6、, 1., 1., 1., 1., 1., 1., 1., 1.),6,10.1.1 数组生成与常用操作, np.ones(1,3) #全1二维数组array( 1., 1., 1.) np.identity(3) #单位矩阵array( 1., 0., 0., 0., 1., 0., 0., 0., 1.) np.identity(2)array( 1., 0., 0., 1.) np.empty(3,3) #空数组array( 0., 0., 0., 0., 0., 0., 0., 0., 0.),7,10.1.1 数组生成与常用操作, np.hamming(20) #Hamming窗口a
7、rray(0.08 , 0.10492407, 0.17699537, 0.28840385, 0.42707668, 0.5779865, 0.7247799 , 0.85154952, 0.94455793, 0.9937262 , 0.9937262, 0.94455793, 0.85154952, 0.7247799 , 0.5779865 , 0.42707668, 0.28840385, 0.17699537, 0.10492407, 0.08 ) np.blackman(10) #Blackman窗口array( -1.38777878e-17, 5.08696327e-02,
8、2.58000502e-01, 6.30000000e-01, 9.51129866e-01, 9.51129866e-01, 6.30000000e-01, 2.58000502e-01, 5.08696327e-02, -1.38777878e-17) np.kaiser(12, 5) #Kaiser窗口array(0.03671089, 0.16199525, 0.36683806, 0.61609304, 0.84458838, 0.98167828, 0.98167828, 0.84458838, 0.61609304, 0.36683806, 0.16199525, 0.03671
9、089),8,10.1.1 数组生成与常用操作, np.random.randint(0, 50, 5) #随机数组,5个0到50之间的数字array(13, 47, 31, 26, 9) np.random.randint(0, 50, (3,5) #3行5列array(34, 2, 33, 14, 40, 9, 5, 10, 27, 11, 26, 17, 10, 46, 30) np.random.rand(10) #10个介于0,1)的随机数array(0.98139326, 0.35675498, 0.30580776, 0.30379627, 0.19527425, 0.59159
10、936, 0.31132305, 0.20219211, 0.20073821, 0.02435331) np.random.standard_normal(5) #从标准正态分布中随机采样5个数字array(2.82669067, 0.9773194, -0.72595951, -0.11343254, 0.74813065),9,10.1.1 数组生成与常用操作, x = np.random.standard_normal(size=(3, 4, 2) xarray( 0.5218421 , -1.10892934, 2.27295689, 0.9598461 , -0.92229318,
11、 2.25708573, 0.0070173 , -0.30608704, 1.05133704, -0.4094823 , -0.03457527, -2.3034343 , -0.45156185, -1.26174441, 0.59367951, -0.78355627, 0.0424474 , -1.75202307, -0.43457619, -0.96445206, 0.28342028, 1.27303125, -0.15312326, 2.0399687 ),10,10.1.1 数组生成与常用操作, np.diag(1,2,3) #对角矩阵array(1, 0, 0, 0, 2
12、, 0, 0, 0, 3) np.diag(1,2,3,4) #对角矩阵array(1, 0, 0, 0, 0, 2, 0, 0, 0, 0, 3, 0, 0, 0, 0, 4),11,10.1.1 数组生成与常用操作,(2)测试两个数组的对应元素是否都足够接近 x = np.array(1, 2, 3, 4.001, 5) y = np.array(1, 1.999, 3, 4.01, 5.1) np.allclose(x, y)False np.allclose(x, y, rtol=0.2) #设置相对误差参数True np.allclose(x, y, atol=0.2) #设置绝对误
13、差参数True,12,10.1.1 数组生成与常用操作,(3)修改数组中的元素值 x = np.arange(8) xarray(0, 1, 2, 3, 4, 5, 6, 7) np.append(x, 8) #返回新数组,增加元素array(0, 1, 2, 3, 4, 5, 6, 7, 8) np.append(x, 9,10) #返回新数组,在尾部追加多个元素array(0, 1, 2, 3, 4, 5, 6, 7, 9, 10) x #不影响原来的数组array(0, 1, 2, 3, 4, 5, 6, 7) x3 = 8 #原地修改元素值 xarray(0, 1, 2, 8, 4,
14、5, 6, 7),13,10.1.1 数组生成与常用操作, np.insert(x, 1, 8) #返回新数组,插入元素array(0, 8, 1, 2, 8, 4, 5, 6, 7) x = np.array(1,2,3, 4,5,6, 7,8,9) x0, 2 = 4 #修改第0行第2列的元素值 x1:, 1: = 1 #切片,同时修改多个值 xarray(1, 2, 4, 4, 1, 1, 7, 1, 1),14,10.1.1 数组生成与常用操作, x1:, 1: = 1,2 #同时修改多个元素值 xarray(1, 2, 4, 4, 1, 2, 7, 1, 2) x1:, 1: = 1
15、,2,3,4 #同时修改多个元素值 xarray(1, 2, 4, 4, 1, 2, 7, 3, 4),15,10.1.1 数组生成与常用操作,(4)数组与标量的计算 x = np.array(1, 2, 3, 4, 5) #创建数组对象 xarray(1, 2, 3, 4, 5) x * 2 #数组与数值相乘,返回新数组array( 2, 4, 6, 8, 10) x / 2 #数组与数值相除array( 0.5, 1. , 1.5, 2. , 2.5) x / 2 #数组与数值整除array(0, 1, 1, 2, 2, dtype=int32) x * 3 #幂运算array(1, 8,
16、 27, 64, 125, dtype=int32) x + 2 #数组与数值相加array(3, 4, 5, 6, 7),16,10.1.1 数组生成与常用操作, x % 3 #余数array(1, 2, 0, 1, 2, dtype=int32) 2 * x #分别计算2*1、2*2、2*3、2*4、2*5array(2, 4, 8, 16, 32, dtype=int32) 2 / xarray(2. ,1. ,0.66666667, 0.5, 0.4) 63 / xarray(63, 31, 21, 15, 12, dtype=int32),17,10.1.1 数组生成与常用操作,(5
17、)数组与数组的四则运算 np.array(1, 2, 3, 4) + np.array(4, 3, 2, 1) #等长数组相加,对应元素相加array(5, 5, 5, 5) np.array(1, 2, 3, 4) + np.array(4) #数组中每个元素加4array(5, 6, 7, 8) a = np.array(1, 2, 3) a + a #等长数组之间的加法运算,对应元素相加array(2, 4, 6) a * a #等长数组之间的乘法运算,对应元素相乘array(1, 4, 9),18,10.1.1 数组生成与常用操作, a - a #等长数组之间的减法运算,对应元素相减a
18、rray(0, 0, 0) a / a #等长数组之间的除法运算,对应元素相除array( 1., 1., 1.) b = np.array(1, 2, 3, 4, 5, 6, 7, 8, 9) c = a * b #不同维度的数组与数组相乘 c #a中的每个元素乘以b中的对应列元素array( 1, 4, 9, 4, 10, 18, 7, 16, 27) c / b #数组之间的除法运算array( 1., 2., 3., 1., 2., 3., 1., 2., 3.),19,10.1.1 数组生成与常用操作, c / aarray( 1., 2., 3., 4., 5., 6., 7.,
19、8., 9.) a+b #a中每个元素加b中的每一列元素array( 2, 4, 6, 5, 7, 9, 8, 10, 12),20,10.1.1 数组生成与常用操作,(6)数组排序 x = np.array(3, 1, 2) np.argsort(x) #返回排序后元素的原下标array(1, 2, 0, dtype=int64) x_ #使用数组做下标,获取排序后的元素array(1, 2, 3) x = np.array(3, 1, 2, 4) x.argmax(), x.argmin() #最大值和最小值的下标(3, 1) np.argsort(x)array(1, 2, 0, 3,
20、dtype=int64) x_array(1, 2, 3, 4) x.sort() #原地排序 xarray(1, 2, 3, 4),21,10.1.1 数组生成与常用操作,(7)数组的内积运算 a = np.array(5, 6, 7) b = np.array(6, 6, 6) a.dot(b) #向量内积108 np.dot(a,b)108 sum(a*b)108,22,10.1.1 数组生成与常用操作,(8)数组元素访问 b = np.array(1,2,3,4,5,6,7,8,9) barray(1, 2, 3, 4, 5, 6, 7, 8, 9) b0 #第0行array(1, 2
21、, 3) b00 #第0行第0列的元素值1 b0,2 #第0行第2列的元素值3 b0,1 #第0行和第1行array(1, 2, 3, 4, 5, 6) b0,1, 1,2 #第0行第1列的元素和第1行第2列的元素 #内部第一个列表表示行下标,第二个列表表示列下标array(2, 6),23,10.1.1 数组生成与常用操作,(9)数组对函数运算的支持 x = np.arange(0, 100, 10, dtype=np.floating) np.sin(x) #一维数组中所有元素求正弦值array(0. , -0.54402111, 0.91294525, -0.98803162, 0.74
22、511316, -0.26237485, -0.30481062, 0.77389068, -0.99388865, 0.89399666) b = np.array(1, 2, 3, 4, 5, 6, 7, 8, 9) np.cos(b) #二维数组中所有元素求余弦值array( 0.54030231, -0.41614684, -0.9899925 , -0.65364362, 0.28366219, 0.96017029, 0.75390225, -0.14550003, -0.91113026) np.round(_) #四舍五入array( 1., -0., -1., -1., 0.
23、, 1., 1., -0., -1.),24,10.1.1 数组生成与常用操作,(10)改变数组大小 a = np.arange(1, 11, 1) aarray(1, 2, 3, 4, 5, 6, 7, 8, 9, 10) a.shape = 2, 5 #改为2行5列,原地修改 aarray( 1, 2, 3, 4, 5, 6, 7, 8, 9, 10) a.shape = 5, -1 #-1表示自动计算,原地修改 aarray( 1, 2, 3, 4, 5, 6, 7, 8, 9, 10),25,10.1.1 数组生成与常用操作, b = a.reshape(2,5) #reshape()
24、方法返回新数组 barray( 1, 2, 3, 4, 5, 6, 7, 8, 9, 10) x = np.array(range(5) x.reshape(1, 10) #reshape()不能修改数组元素个数Traceback (most recent call last): File , line 1, in x.reshape(1, 10)ValueError: total size of new array must be unchanged x.resize(1,10) #resize()可以改变数组元素个数 xarray(0, 1, 2, 3, 4, 0, 0, 0, 0, 0)
25、,26,10.1.1 数组生成与常用操作,(11)数组切片操作 a = np.arange(10) aarray(0, 1, 2, 3, 4, 5, 6, 7, 8, 9) a:-1 #反向切片array(9, 8, 7, 6, 5, 4, 3, 2, 1, 0) a:2 #隔一个取一个元素array(0, 2, 4, 6, 8) a:5 #前5个元素array(0, 1, 2, 3, 4),27,10.1.1 数组生成与常用操作, c = np.arange(25) #创建数组 c.shape = 5,5 #修改数组大小 carray( 0, 1, 2, 3, 4, 5, 6, 7, 8,
26、9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24) c0, 2:5 #第0行中下标2,5)之间的元素值array(2, 3, 4) c1 #第0行所有元素array(5, 6, 7, 8, 9),28,10.1.1 数组生成与常用操作, c2:5, 2:5 #行下标和列下标都介于2,5)之间的元素值array(12, 13, 14, 17, 18, 19, 22, 23, 24) c1,3, 2,4 #第1行第2列的元素和第3行第4列的元素array( 7, 19) c1,3, 2:4 #第1行和第3行的第2、3列arr
27、ay( 7, 8, 17, 18) c1,3 #第1行和第3行所有元素array( 5, 6, 7, 8, 9, 15, 16, 17, 18, 19) c1,3:, 2,4 #第1、3行的2、4列元素array( 7, 9, 17, 19),29,10.1.1 数组生成与常用操作,(12)数组布尔运算 x = np.random.rand(10) #包含10个随机数的数组 xarray(0.56707504, 0.07527513, 0.0149213, 0.49157657, 0.75404095, 0.40330683, 0.90158037, 0.36465894, 0.3762085
28、9, 0.62250594) x 0.5 #比较数组中每个元素值是否大于0.5array( True, False, False, False, True, False, True, False, False, True, dtype=bool) xx0.5 #获取数组中大于0.5的元素array( 0.56707504, 0.75404095, 0.90158037, 0.62250594) x np.all(x1) #测试是否全部元素都小于1True,30,10.1.1 数组生成与常用操作, np.any(1,2,3,4) #是否存在等价于True的元素True np.any(0)Fals
29、e a = np.array(1, 2, 3) b = np.array(3, 2, 1) a b #两个数组中对应位置上的元素比较array(False, False, True, dtype=bool) aab #数组a中大于b数组对应位置上元素的值array(3) a = barray(False, True, False, dtype=bool) aa=barray(2),31,10.1.1 数组生成与常用操作, x = np.arange(1, 10) xarray(1, 2, 3, 4, 5, 6, 7, 8, 9) x(x%2=0)&(x5) #布尔与运算array(6, 8)
30、x(x%2=0)|(x5) #布尔或运算array(2, 4, 6, 7, 8, 9),32,10.1.1 数组生成与常用操作, import numpy as np data = np.array(1,2,3, 2,3,3, 3,4,5, 1,2,3, 4,5,6, 1,2,3) data=1,2,3array( True, True, True, False, False, True, False, False, False, True, True, True, False, False, False, True, True, True) index = list(map(lambda r
31、ow:all(row=1,2,3), data) dataindex #获取所有1,2,3的行array(1, 2, 3, 1, 2, 3, 1, 2, 3),33,10.1.1 数组生成与常用操作,(13)分段函数 x = np.random.randint(0, 10, size=(1,10) xarray(0, 4, 3, 3, 8, 4, 7, 3, 1, 7) np.where(x np.piecewise(x, x7, lambda x:x*2, lambda x:x*3) #小于4的元素乘以2 #大于7的元素乘以3 #其他元素变为0array( 0, 0, 6, 6, 24, 0
32、, 0, 6, 2, 0),34,10.1.1 数组生成与常用操作,(14)计算唯一值与出现次数 x = np.random.randint(0, 10, 7) xarray(8, 7, 7, 5, 3, 8, 0) np.bincount(x) #元素出现次数,0出现1次, #1、2没出现,3出现1次,以此类推array(1, 0, 0, 1, 0, 1, 0, 2, 2, dtype=int64) np.sum(_) #所有元素出现次数之和等于数组长度7 len(x)7 np.unique(x) #返回唯一元素值array(0, 3, 5, 7, 8),35,10.1.2 矩阵生成与常用操
33、作,(1)生成矩阵 a_list = 3, 5, 7 a_mat = np.matrix(a_list) #创建矩阵 a_matmatrix(3, 5, 7) c_mat = np.matrix(1, 5, 3, 2, 9, 6) #创建矩阵 c_matmatrix(1, 5, 3, 2, 9, 6),36,10.1.2 矩阵生成与常用操作,(2)矩阵转置 a_mat.T #矩阵转置matrix(3, 5, 7) a_mat.shape #矩阵形状(1, 3) a_mat.size #元素个数3,37,10.1.2 矩阵生成与常用操作,(3)计算矩阵特征 a_mat.mean() #元素平均值
34、5.0 a_mat.sum() #所有元素之和15 a_mat.max() #最大值7 a_mat.max(axis=1) #横向最大值matrix(7) a_mat.max(axis=0) #纵向最大值matrix(3, 5, 7),38,10.1.2 矩阵生成与常用操作,(4)矩阵相乘 b_mat = np.matrix(1, 2, 3) #创建矩阵 b_matmatrix(1, 2, 3) a_mat * b_mat.T #矩阵相乘matrix(34),39,10.1.2 矩阵生成与常用操作,(5)矩阵元素排序 c_mat.argsort(axis=0) #纵向排序后的元素序号matri
35、x(0, 0, 0, 1, 1, 1, dtype=int64) c_mat.argsort(axis=1) #横向排序后的元素序号matrix(0, 2, 1, 0, 2, 1, dtype=int64),40,10.1.2 矩阵生成与常用操作,(6)计算相关系数矩阵(对称矩阵,对角线上元素表示自相关系数) np.corrcoef(1,2,3,4, 4,3,2,1) #负相关,变化方向相反array( 1., -1., -1., 1.) np.corrcoef(1,2,3,4, 1,2,3,4) #正相关,变化方向一致array( 1., 1., 1., 1.) np.corrcoef(1,
36、2,3,4, 1,2,3,40)#正相关,变化趋势接近array( 1. , 0.8010362, 0.8010362, 1. ),41,10.1.2 矩阵生成与常用操作,(7)矩阵行列扩展 import numpy as np data = np.matrix(np.random.randint(1,10,5) for _ in range(6) newCols = np.matrix(np.random.randint(1,10,2) for _ in range(6) newRows = np.matrix(np.random.randint(1,10,5) for _ in range
37、(3) datamatrix(8, 7, 7, 6, 1, 1, 9, 8, 5, 9, 1, 8, 7, 9, 6, 1, 4, 5, 5, 2, 4, 3, 1, 9, 2, 6, 3, 2, 7, 7),42,10.1.2 矩阵生成与常用操作, newColsmatrix(7, 1, 6, 3, 9, 1, 2, 7, 8, 8, 9, 1) newRowsmatrix(8, 3, 7, 5, 8, 7, 4, 7, 3, 8, 2, 8, 5, 2, 3),43,10.1.2 矩阵生成与常用操作, np.c_data, newCols #在右侧增加列matrix(8, 7, 7, 6,
38、 1, 7, 1, 1, 9, 8, 5, 9, 6, 3, 1, 8, 7, 9, 6, 9, 1, 1, 4, 5, 5, 2, 2, 7, 4, 3, 1, 9, 2, 8, 8, 6, 3, 2, 7, 7, 9, 1) np.c_newCols, data #在左侧增加列matrix(7, 1, 8, 7, 7, 6, 1, 6, 3, 1, 9, 8, 5, 9, 9, 1, 1, 8, 7, 9, 6, 2, 7, 1, 4, 5, 5, 2, 8, 8, 4, 3, 1, 9, 2, 9, 1, 6, 3, 2, 7, 7),44,10.1.2 矩阵生成与常用操作, np.r_
39、data, newRows #在下面增加行matrix(8, 7, 7, 6, 1, 1, 9, 8, 5, 9, 1, 8, 7, 9, 6, 1, 4, 5, 5, 2, 4, 3, 1, 9, 2, 6, 3, 2, 7, 7, 8, 3, 7, 5, 8, 7, 4, 7, 3, 8, 2, 8, 5, 2, 3),45,10.1.2 矩阵生成与常用操作, np.r_newRows, data #在上面增加行matrix(8, 3, 7, 5, 8, 7, 4, 7, 3, 8, 2, 8, 5, 2, 3, 8, 7, 7, 6, 1, 1, 9, 8, 5, 9, 1, 8, 7,
40、 9, 6, 1, 4, 5, 5, 2, 4, 3, 1, 9, 2, 6, 3, 2, 7, 7),46,10.1.2 矩阵生成与常用操作, np.r_data, newRows, newRows #在下面增加行matrix(8, 7, 7, 6, 1, 1, 9, 8, 5, 9, 1, 8, 7, 9, 6, 1, 4, 5, 5, 2, 4, 3, 1, 9, 2, 6, 3, 2, 7, 7, 8, 3, 7, 5, 8, 7, 4, 7, 3, 8, 2, 8, 5, 2, 3, 8, 3, 7, 5, 8, 7, 4, 7, 3, 8, 2, 8, 5, 2, 3),47,10
41、.1.2 矩阵生成与常用操作, np.insert(data, 0, newRows, axis=0) #在第0行增加行matrix(8, 3, 7, 5, 8, 7, 4, 7, 3, 8, 2, 8, 5, 2, 3, 8, 7, 7, 6, 1, 1, 9, 8, 5, 9, 1, 8, 7, 9, 6, 1, 4, 5, 5, 2, 4, 3, 1, 9, 2, 6, 3, 2, 7, 7),48,10.1.2 矩阵生成与常用操作, np.insert(data, 3, newRows, axis=0) #在第3行增加行matrix(8, 7, 7, 6, 1, 1, 9, 8, 5,
42、 9, 1, 8, 7, 9, 6, 8, 3, 7, 5, 8, 7, 4, 7, 3, 8, 2, 8, 5, 2, 3, 1, 4, 5, 5, 2, 4, 3, 1, 9, 2, 6, 3, 2, 7, 7),49,10.1.2 矩阵生成与常用操作, np.insert(data, 4, newCols.T, axis=1) #在第4列处增加列matrix(8, 7, 7, 6, 7, 1, 1, 1, 9, 8, 5, 6, 3, 9, 1, 8, 7, 9, 9, 1, 6, 1, 4, 5, 5, 2, 7, 2, 4, 3, 1, 9, 8, 8, 2, 6, 3, 2, 7,
43、 9, 1, 7),50,10.1.2 矩阵生成与常用操作, np.row_stack(data, newRows) #扩展行matrix(8, 7, 7, 6, 1, 1, 9, 8, 5, 9, 1, 8, 7, 9, 6, 1, 4, 5, 5, 2, 4, 3, 1, 9, 2, 6, 3, 2, 7, 7, 8, 3, 7, 5, 8, 7, 4, 7, 3, 8, 2, 8, 5, 2, 3),51,10.1.2 矩阵生成与常用操作, np.column_stack(data, newCols) #扩展列matrix(8, 7, 7, 6, 1, 7, 1, 1, 9, 8, 5,
44、 9, 6, 3, 1, 8, 7, 9, 6, 9, 1, 1, 4, 5, 5, 2, 2, 7, 4, 3, 1, 9, 2, 8, 8, 6, 3, 2, 7, 7, 9, 1),52,10.1.2 矩阵生成与常用操作,(8)计算方差、协方差。 np.cov(1,1,1,1,1) #协方差array(0.0) x = -2.1, -1, 4.3 y = 3, 1.1, 0.12 X = np.vstack(x,y) print(np.cov(X) #协方差 11.71 -4.286 -4.286 2.14413333 print(np.cov(x, y) 11.71 -4.286 -4
45、.286 2.14413333 print(np.cov(x)11.709999999999999,53,10.1.3 计算特征值与特征向量, import numpy as np e, v = np.linalg.eig(1,1,2,2) #特征值与特征向量 earray( 0., 3.) varray(-0.70710678, -0.4472136 , 0.70710678, -0.89442719) array = np.arange(1, 10).reshape(3,3) e, v = np.linalg.eig(array) earray( 1.61168440e+01, -1.11
46、684397e+00, -9.75918483e-16) varray(-0.23197069, -0.78583024, 0.40824829, -0.52532209, -0.08675134, -0.81649658, -0.8186735 , 0.61232756, 0.40824829),54,10.1.4 计算逆矩阵, import numpy as np x = np.matrix(1,2, 3,4) y = np.linalg.inv(x) #计算逆矩阵 x * y #验证matrix( 1.00000000e+00, 1.11022302e-16, 0.00000000e+0
47、0, 1.00000000e+00) y * xmatrix( 1.00000000e+00, 4.44089210e-16, 0.00000000e+00, 1.00000000e+00),55,10.1.5 矩阵QR分解, import numpy as np a = np.matrix(1,2,3, 4,5,6) q, r = np.linalg.qr(a) np.dot(q,r) #验证matrix( 1., 2., 3., 4., 5., 6.),56,10.1.6 计算行列式, import numpy as np a = 1,2, 3,4 np.linalg.det(a)-2.0
48、000000000000004 a = np.array(1, 2, 3, 4, 1, 2, 2, 1, 1, 3, 3, 1) np.linalg.det(a)array(-2., -3., -8.),57,10.1.7 矩阵奇异值分解, import numpy as np a = np.arange(60).reshape(5,-1) aarray( 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32
49、, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59) U, s, V = np.linalg.svd(a, full_matrices=False),58,10.1.7 矩阵奇异值分解, np.dot(U, np.dot(np.diag(s), V)array( 7.01764278e-15, 1.00000000e+00, 2.00000000e+00, 3.00000000e+00, 4.00000000e+00, 5.000
50、00000e+00, 6.00000000e+00, 7.00000000e+00, 8.00000000e+00, 9.00000000e+00, 1.00000000e+01, 1.10000000e+01, 1.20000000e+01, 1.30000000e+01, 1.40000000e+01, 1.50000000e+01, 1.60000000e+01, 1.70000000e+01, 1.80000000e+01, 1.90000000e+01, 2.00000000e+01, 2.10000000e+01, 2.20000000e+01, 2.30000000e+01, 2