(本科)第10章 Python科学计算与数据分析开发基础ppt课件.pptx

上传人:春哥&#****71; 文档编号:16398095 上传时间:2022-05-17 格式:PPTX 页数:113 大小:1.28MB
返回 下载 相关 举报
(本科)第10章 Python科学计算与数据分析开发基础ppt课件.pptx_第1页
第1页 / 共113页
(本科)第10章 Python科学计算与数据分析开发基础ppt课件.pptx_第2页
第2页 / 共113页
点击查看更多>>
资源描述

《(本科)第10章 Python科学计算与数据分析开发基础ppt课件.pptx》由会员分享,可在线阅读,更多相关《(本科)第10章 Python科学计算与数据分析开发基础ppt课件.pptx(113页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、课程主讲人:(本科)第10章 Python科学计算与数据分析开发基础ppt课件Chap10 Scientific Computing and Data Processing Department of Computer Science and TechnologyDepartment of University Basic Computer TeachingNanjing UniversityNanjing University科学计算生态系统SciPyNanjing UniversitySciPy特征 基于Python的软件生态系统(ecosystem) 开源 主要为数学、科学和工程服务4N

2、anjing UniversityNumPy特征 高性能科学计算和数据分析的基础包 强大的ndarray对象 精巧的函数和ufunc函数 适合线性代数和随机数处理等科学计算 import numpy as np xArray = np.ones(3, 4)Source5Nanjing UniversitySciPy library特征 Python中科学计算程序的核心包 有效计算numpy矩阵,让NumPy和SciPy library协同工作 致力于科学计算中常见问题的各个工具箱,其不同子模块有不同的应用,如插值、积分、优化和图像处理等 import numpy as np from scip

3、y import linalg arr = np.array(1, 2, 3, 4) linalg.det(arr)-2.0Source6Nanjing UniversityMatplotlib特征 基于NumPy 二维绘图库,简单快速地生成曲线图、直方图和散点图等形式的图 常用的pyplot是一个简单提供类似MATLAB接口的模块7Nanjing Universitypandas特征 基于 SciPy library和 NumPy 高效的Series和DataFrame数据结构 强大的可扩展数据操作与分析的Python库 高效处理大数据集的切片等功能 提供优化库功能读写多种文件格式,如CSV

4、、HDF5 df2 : 5 df.head(4) df.tail(3)Source8Nanjing UniversityPython常用的数据结构数值型字符串列表元组字典集合9Nanjing University其他数据结构? SciPy中的数据结构Python原有数据结构的变化 ndarray(N维数组) Series(变长字典) DataFrame(数据框)10Nanjing UniversityNumPyNanjing UniversityPython中的数组 用list和tuple等数据结构表示数组 一维数组 list = 1,2,3,4 二维数组 list = 1,2,3,4,5,6

5、,7,8,9 array模块 通过array函数创建数组,array.array(B, range(5) 提供append、insert和read等方法12Nanjing Universityndarray ndarray是什么? N维数组 NumPy中基本的数据结构 所有元素是同一种类型 别名为array 利于节省内存和提升计算性能 有丰富的函数0000000000000000000000000012345678910111213141516171819202122232413Nanjing University10.2.1 ndarray的基本特性14Nanjing Universityn

6、darray基本概念 ndarray数组属性 N维数组 维度(dimensions)称为轴(axes),轴的个数称为秩(rank) 沿着第0轴和第1轴操作 axis = 0(按列) axis = 1(按行)00000000000012345678910 11 1215第0轴第1轴Nanjing Universityndarray基本概念 ndarray数组属性 N维数组 基本属性 ndarray.ndim(秩) ndarray.shape(维度) ndarray.size(元素总个数) ndarray.dtype(元素类型) ndarray.itemsize(元素字节大小)0000000000

7、0012345678910 11 1216第0轴第1轴Nanjing University10.2.2 创建ndarray17Nanjing Universityndarray的创建 import numpy as np aArray = np.array(1,2,3) aArrayarray(1, 2, 3) bArray=np.array(1,2,3),(4,5,6), dtype =float32) bArrayarray(1., 2., 3., 4., 5., 6., dtype=float32) bArray.ndim, bArray.shape, bArray.dtype (2,

8、(2, 3), dtype(float32)Sourcearray()函数18Nanjing Universityndarray的创建 np.zeros(2, 2)array( 0., 0., 0., 0.) np.ones(2, 3)array( 1., 1., 1., 1., 1., 1.)Source19zeros()ones()Nanjing Universityndarray的创建 np.full(2,2), 0)array(0, 0, 0, 0) np.full(2,3), 1, dtype = np.int32)array(1, 1, 1, 1, 1, 1, dtype=int3

9、2) np.full(3,3), np.pi)array(3.14159265, 3.14159265, 3.14159265, 3.14159265, 3.14159265, 3.14159265, 3.14159265, 3.14159265, 3.14159265)Source20full()Nanjing Universityndarray的创建 x = np.array(1,2,3, 4,5,6, dtype = np.float32) np.zeros_like(x)array(0., 0., 0., 0., 0., 0., dtype=float32) np.ones_like(

10、x)array(1., 1., 1., 1., 1., 1., dtype=float32) np.full_like(x, 5)array(5., 5., 5., 5., 5., 5., dtype=float32)Source21zeros_like() ones_like()full_like()Nanjing Universityndarray的创建 np.identity(3)array(1., 0., 0., 0., 1., 0., 0., 0., 1.) np.eye(3)array(1., 0., 0., 0., 1., 0., 0., 0., 1.)Source22ident

11、ity()eye() np.eye(3, k = 1)array(0., 1., 0., 0., 0., 1., 0., 0., 0.) np.eye(4, k = -2)array(0., 0., 0., 0., 0., 0., 0., 0., 1., 0., 0., 0., 0., 1., 0., 0.)SourceNanjing Universityndarray的创建 np.arange(1, 5, 0.5)array( 1. , 1.5, 2. , 2.5, 3. , 3.5, 4. , 4.5) np.linspace(1, 2, 10, endpoint = False)arra

12、y( 1. , 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 1.8, 1.9) np.empty(2, 2)array( 1.49166815e-154, -1.29073971e-231, 1.48219694e-323, 0.00000000e+000)Source23arange()linspace()empty()Nanjing Universityndarray的创建 np.fromfunction(lambda i, j:(i+1)*(j+1), (9,9)array( 1., 2., 3., 4., 5., 6., 7., 8., 9., 2., 4.,

13、 6., 8., 10., 12., 14., 16., 18., 3., 6., 9., 12., 15., 18., 21., 24., 27., 4., 8., 12., 16., 20., 24., 28., 32., 36., 5., 10., 15., 20., 25., 30., 35., 40., 45., 6., 12., 18., 24., 30., 36., 42., 48., 54., 7., 14., 21., 28., 35., 42., 49., 56., 63., 8., 16., 24., 32., 40., 48., 56., 64., 72., 9., 1

14、8., 27., 36., 45., 54., 63., 72., 81.)Source24fromfunction()Nanjing University10.2.3 ndarray的操作和运算25Nanjing Universityndarray的基本操作-切片 aArray = np.array(1, 2, 3), (4, 5, 6)array(1, 2, 3, 4, 5, 6) print(aArray1)4 5 6 print(aArray0: 2)1 2 3 4 5 6 print(aArray:, 0, 1)1 2 4 5 print(aArray1, 0, 1)4 5Sourc

15、e26000000123456 print(aArray:, 1:)2 3 5 6 print(aArray:,:2)1 3 4 6SourceNanjing Universityndarray的基本操作-改变数组形状 aArray = np.array(1,2,3),(4,5,6) aArray.shape(2, 3) bArray = aArray.reshape(3,2) bArrayarray(1, 2, 3, 4, 5, 6) aArrayarray(1, 2, 3, 4, 5, 6)Source27Nanjing Universityndarray的基本操作-改变数组形状28 aA

16、rray = np.arange(1, 17) aArrayarray( 1, 2, 3, ., 14, 15, 16) aArray.resize(4, 4) aArrayarray( 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16)SourceNanjing Universityndarray的基本操作-堆叠 bArray = np.array(1,3,7) cArray = np.array(3,5,8) np.vstack(bArray, cArray)array(1, 3, 7, 3, 5, 8) np.hstack(bAr

17、ray, cArray)array(1, 3, 7, 3, 5, 8)Source29Nanjing Universityndarray的运算 aArray = np.array(1,2,3),(4,5,6) bArray = np.array(2,2,2),(2,2,2) cArray = aArray * bArray cArrayarray(2, 4, 6, 8, 10, 12) aArray += bArray aArrayarray(3, 4, 5, 6, 7, 8)Source/*-+30利用基本运算符Nanjing Universityndarray的运算 a = np.arra

18、y(1,2,3) b = np.array(4,5,6,7,8,9) a + barray(5, 7, 9, 8, 10, 12)Source31广播功能较小的数组会广播到较大数组的大小,使它们的形状兼容000000456789000000123123扩展00000057981012Nanjing Universityndarray的运算32 x = np.array(2,3, 3,4) y = np.array(7,3, 6,4) np.dot(x, y)array(32, 18, 45, 25) x = np.matrix(2,3, 3,4) y = np.matrix(7,3, 6,4)

19、 x * ymatrix(32, 18, 45, 25)SourceNanjing Universityndarray的运算统计 aArray = np.array(6,5,4),(3,2,1) aArray.sum()21 aArray.sum(axis = 0)array(9, 7, 5) aArray.sum(axis = 1)array( 15, 6) aArray.min() # return value1 aArray.argmin() # return index5Source33利用基本数组统计方法summeanstdvarminmaxargminargmaxcumsumcum

20、prodNanjing Universityndarray的运算统计 aArray = np.array(6,5,4),(3,2,1) aArray.mean()3.5 aArray.var()2.9166666666666665 aArray.std()1.707825127659933Source34利用基本数组统计方法summeanstdvarminmaxargminargmaxcumsumcumprodNanjing University布尔数组35 a = np.arange(1, 101) b = aa barray( 1, 2, 3, 4, 5, 6, 7, 8, 9, 10,

21、11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50)Source boolID = a boolIDarray( True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, False, False, False,

22、 False, False,False)SourceNanjing University布尔数组36 a(a %2=0) & (a 50)array( 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100) aa % 2 = 0 = -1 aSourcearray( 1, -1, 3, -1, 5, -1, 7, -1, 9, -1, 11, -1, 13, -1, 15, -1, 17, -1, 19, -1, 21, -1, 23, -1, 25

23、, -1, 27, -1, 29, -1, 31, -1, 33, -1, 35, -1, 37, -1, 39, -1, 41, -1, 43, -1, 45, -1, 47, -1, 49, -1, 51, -1, 53, -1, 55, -1, 57, -1, 59, -1, 61, -1, 63, -1, 65, -1, 67, -1, 69, -1, 71, -1, 73, -1, 75, -1, 77, -1, 79, -1, 81, -1, 83, -1, 85, -1, 87, -1, 89, -1, 91, -1, 93, -1, 95, -1, 97, -1, 99, -1

24、)Source c = np.where(a % 2 = 0, -1, a) c result = np.where(condition, aArr, bArr)Nanjing Universitywhere函数37 x = np.random.random(3, 3) xarray(0.89311886,0.4587473, 0.04444645, 0.98066, 0.8144072, 0.98489384, 0.58542633, 0.21855129, 0.88590604) np.where(x import numpy as np x = np.array(1,2, 3,4) r1

25、 = np.linalg.det(x) print(r1)-2.0 r2 = np.linalg.inv(x) print(r2)-2. 1. 1.5 -0.5dot矩阵内积linalg.det行列式linalg.inv逆矩阵linalg.solve多元一次方程组求根linalg.eig求特征值和特征向量常用函数示例Nanjing University求解线性方程组 利用NumPy的linalg模块中的solve()函数例如要求解如下二元一次方程组:-x0 + 4x1 = 102x0 + 3x1 = 1343 a = np.array(-1,4, 2,3) b = np.array(10,13

26、) x = np.linalg.solve(a, b) xarray( 2., 3.)SourceNanjing University求解非线性方程组 使用scipy.optimize模块中的fsolve()函数来解决。例如对于如下非线性方程组:2x02 - 3x1 = 63x0 + x12 = 2544from scipy.optimize import fsolve def f(x): x0, x1 = float(x0), float(x1) return 2*x0*2-3*x1-6, 3*x0+x1*2-25 x = fsolve(f, 0, 0)print(x)File 3. 4.N

27、anjing UniversitypandasNanjing University10.3.1 Series46Nanjing UniversitySeries 基本特征 由数据和索引组成(有序字典,也称变长字典) import pandas as pd aSer = pd.Series(1, 2.0, a) aSer0 11 22 adtype: objectSource47Series()函数Nanjing University自定义Series的index bSer = pd.Series(apple,peach,lemon, index = 1,2,3) bSer1 apple2 pe

28、ach3 lemondtype: objectaSer.index = 1,2,3 aSer1 12 23 adtype: objectSource48Nanjing University自定义Series的index bSer.index # 常进行单独赋值Int64Index(1, 2, 3, dtype = int64) bSer.valuesarray(apple, peach, lemon, dtype = object)Source49Nanjing UniversitySeries的基本运算 cSer = pd.Series(3, 5, 7, index = a, b, c) c

29、Serb5 cSer * 2a 6b 10c 14dtype: int64 import numpy as np np.exp(cSer)a 20.085537b 148.413159c 1096.633158dtype: float64Source50Nanjing UniversitySeries的基本运算 cSer = pd.Series(3, 5, 7, index = a, b, c) cSer1: 2b 5dtype: int64 cSera: ba 3b 5dtype: int64Source51切片基于位置基于索引Nanjing UniversitySeries的数据对齐 da

30、ta = apple:6, peach:8, lemon:15 sindex = apple, peach, orange, lemon dSer = pd.Series(data, index = sindex) dSerapple 6.0peach 8.0orange NaNlemon 15.0dtype: float64Source52 pd.isnull(dSer)apple Falsepeach Falseorange Truelemon Falsedtype: boolSourceNanjing UniversitySeries的数据对齐 eSer = pd.Series(appl

31、e:6, peach:8, kiwi:20) eSerapple 6peach 8kiwi 20dtype: int64 dSer + eSerapple 12.0kiwi NaNlemon NaNorange NaNpeach 16.0dtype: float64Source 重要功能 在算术运算中自动对齐不同索引的数据53Nanjing University10.3.2 DataFrame54Nanjing UniversityDataFrame 基本特征 一个表格型的数据结构(称数据框) 含有一组有序的列(类似于index) 大致可看成共享同一个index的Series集合55 name

32、 pay0 Mayue 30001 Lilin 45002 Wuyun 8000Nanjing University创建DataFrame data = name: Mayue, Lilin, Wuyun, pay: 3000, 4500, 8000 aDF = pd.DataFrame(data) aDF name pay0 Mayue 30001 Lilin 45002 Wuyun 8000Source56DataFrame()函数Nanjing UniversityDataFrame的索引和值 data = np.array(Mayue, 3000), (Lilin, 4500), (W

33、uyun, 8000) bDF =pd.DataFrame(data, index = range(1, 4), columns = name, pay) bDF name pay1 Mayue 30002 Lilin 45003 Wuyun 8000 bDF.index# 重新赋值即为修改行索引RangeIndex(start=1, stop=4, step=1) bDF.columns # 重新赋值即为修改列索引Index(name, pay, dtype=object) bDF.values array(Mayue, 3000, Lilin, 4500, Wuyun, 8000, dty

34、pe=object)Source57Nanjing University设定DataFrame的索引 bDF = pd.DataFrame(data, columns = name, pay).set_index(name) bDFpayname Mayue 3000Lilin 4500Wuyun 8000 bDF = pd.DataFrame(data, index = range(1, 4), columns = name, pay) bDF.set_index(name, inplace = True) # 默认drop参数的值为True,表示删掉原数据列 bDFpayname Mayu

35、e 3000Lilin 4500Wuyun 8000Source58Nanjing University设定DataFrame的索引 bDF = pd.DataFrame(data, index = range(1, 4), columns = name, pay) bDF name pay1 Mayue 30002 Lilin 45003Wuyun 8000 index_new = 1, 3, 2 bDF = bDF.reindex(index = index_new) bDF name pay1 Mayue 30003 Wuyun 80002Lilin 4500 columns_new =

36、 pay,name bDF = bDF.reindex(columns = columns_new) bDF pay name1 3000 Mayue3 8000 Wuyun2 4500 LilinSource59Nanjing University修改DataFrame-添加列 aDFtax = 0.05, 0.05, 0.1 aDF name pay tax0 Mayue 3000 0.051 Lilin 4500 0.052 Wuyun 8000 0.1Source60 aDF name pay0 Mayue 30001 Lilin 45002 Wuyun 8000Nanjing Uni

37、versity修改DataFrame-添加行 aDF.loc5 = name: Liuxi, pay: 5000, tax: 0.05 aDF name pay tax0 Mayue 3000 0.051 Lilin 4500 0.052 Wuyun 8000 0.15 Liuxi 5000 0.05Source61 aDF name pay tax0 Mayue 3000 0.051 Lilin 4500 0.052 Wuyun 8000 0.1Nanjing University修改DataFrame-添加行62 aDF name pay tax0 Mayue 3000 0.051 Lil

38、in 4500 0.052 Wuyun 8000 0.15 Liuxi 5000 0.05 tempDF name pay tax7 Yeqing 7000 0.19 Qianjie 9500 0.1 aDF.append(tempDF) name pay tax0 Mayue 3000 0.051 Lilin 4500 0.052 Wuyun 8000 0.15 Liuxi 5000 0.057 Yeqing 7000 0.19 Qianjie 9500 0.1SourceNanjing University修改DataFrame-添加行63 aDF name pay tax0 Mayue

39、3000 0.051 Lilin 4500 0.052 Wuyun 8000 0.15 Liuxi 5000 0.05 tempDF name pay tax7 Yeqing 7000 0.19 Qianjie 9500 0.1 pieces = aDF, tempDF pd.concat(pieces) name pay tax0 Mayue 3000 0.051 Lilin 4500 0.052 Wuyun 8000 0.15 Liuxi 5000 0.057 Yeqing 7000 0.19 Qianjie 9500 0.1SourceNanjing University删除64 aDF

40、 name pay tax0 Mayue 3000 0.051 Lilin 4500 0.052 Wuyun 8000 0.15 Liuxi 5000 0.05 aDF.drop(5) name pay tax0 Mayue 3000 0.051 Lilin 4500 0.052 Wuyun 8000 0.1 aDF.drop(tax, axis = 1) name pay0 Mayue 30001 Lilin 45002 Wuyun 80005 Liuxi 5000SourceNanjing University修改DataFrame aDFtax = 0.03 aDF name pay t

41、ax0 Mayue 3000 0.031 Lilin 4500 0.032 Wuyun 8000 0.035 Liuxi 5000 0.03 aDF.loc5 = Liuxi, 9800, 0.05 name pay tax0 Mayue 3000 0.031 Lilin 4500 0.032 Wuyun 8000 0.035 Liuxi 9800 0.05Source65 aDF name pay tax0 Mayue 3000 0.051 Lilin 4500 0.052 Wuyun 8000 0.15 Liuxi 5000 0.05Nanjing UniversityDataFrame数

42、据存取66score.csvNanjing UniversityDataFrame数据存取-读csv文件 import pandas as pd data = pd.read_csv(score.csv, encoding = gb2312) data 姓名 语文 数学 英语 总分0 陈纯 88 87 85 2601 方小磊 93 88 90 2712 王妤 82 99 96 2773 彭子晖 97 94 84 2754 丁海斌 97 94 76 26767SourceNanjing UniversityDataFrame数据存取-写csv文件# Filename: to_csv.pyimpo

43、rt pandas as pddf = pd.DataFrame(data)df.to_csv(score_copy.csv)File68Nanjing UniversityDataFrame数据存取-读写excel文件# Filename: excel_rw.pyimport pandas as pddf = pd.read_excel(score.xlsx)df.to_excel(score.xlsx, sheet_name = score)File69Nanjing UniversityDataFrame数据存取-读写excel文件 import pandas as pd df = pd

44、.read_excel(score.xlsx, index_col = name) df Math Physics English Python PEname stu1 NaN 73.0 92 82 95stu2 92.0 95.0 88 96 85stu3 90.0 92.0 93 95 90stu4 83.0 93.0 86 85 60stu5 87.0 NaN 70 93 75stu6 95.0 87.0 90 98 8070SourceNanjing UniversityDataFrame数据存取-处理空值-删除 df.dropna() # 返回不包含NaN的行,df不变 Math P

45、hysics English Python PEname stu2 92.0 95.0 88 96 85stu3 90.0 92.0 93 95 90stu4 83.0 93.0 86 85 60stu6 95.0 87.0 90 98 8071SourceNanjing UniversityDataFrame数据存取-处理空值-删除 df.dropna(how = all) # 返回不全为NaN的行,df不变 Math Physics English Python PEname stu1 NaN 73.0 92 82 95stu2 92.0 95.0 88 96 85stu3 90.0 92

46、.0 93 95 90stu4 83.0 93.0 86 85 60stu5 87.0 NaN 70 93 75stu6 95.0 87.0 90 98 8072SourceNanjing UniversityDataFrame数据存取-处理空值-填充 df.fillna(0) # 用0填充NaN Math Physics English Python PEname stu1 0.0 73.0 92 82 95stu2 92.0 95.0 88 96 85stu3 90.0 92.0 93 95 90stu4 83.0 93.0 86 85 60stu5 87.0 0.0 70 93 75st

47、u6 95.0 87.0 90 98 8073SourceNanjing UniversityDataFrame数据存取-处理空值-填充 df.fillna(df.mean() # 用该列数据的平均值填充NaN Math Physics English Python PEname stu1 89.4 73.0 92 82 95stu2 92.0 95.0 88 96 85stu3 90.0 92.0 93 95 90stu4 83.0 93.0 86 85 60stu5 87.0 88.0 70 93 75stu6 95.0 87.0 90 98 8074SourceNanjing Unive

48、rsityDataFrame数据存取-处理空值-填充 df.fillna(method = bfill) # 指定缺失值的填充方向 Math Physics English Python PEname stu1 92.0 73.0 92 82 95stu2 92.0 95.0 88 96 85stu3 90.0 92.0 93 95 90stu4 83.0 93.0 86 85 60stu5 87.0 87.0 70 93 75stu6 95.0 87.0 90 98 8075SourceNanjing UniversityDataFrame数据存取-处理空值-填充df.fillna(meth

49、od = bfill, inplace = True) df Math Physics English Python PEname stu1 92.0 73.0 92 82 95stu2 92.0 95.0 88 96 85stu3 90.0 92.0 93 95 90stu4 83.0 93.0 86 85 60stu5 87.0 87.0 70 93 75stu6 95.0 87.0 90 98 8076SourceNanjing UniversityDataFrame数据选择选择方式 选择行 选择列 选择区域 筛选(条件选择)77Nanjing UniversityDataFrame数据

50、选择-选择行 dfa: c df0: 3 df.head(3)Source 选择行索引切片专门的方法78 df 姓名 语文 数学 英语 总分a 陈纯 88 87 85 260b 方小磊 93 88 90 271c 王妤 82 99 96 277d 彭子晖 97 94 84 275e 丁海斌 97 94 76 267Nanjing UniversityDataFrame数据选择-选择列 选择列列名不支持df姓名, 语文df语文: 英语79 df 姓名 语文 数学 英语 总分a 陈纯 88 87 85 260b 方小磊 93 88 90 271c 王妤 82 99 96 277d 彭子晖 97 9

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 大学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com