数据分析基础 课件 项目2 Numpy数值计算实战_第1页
数据分析基础 课件 项目2 Numpy数值计算实战_第2页
数据分析基础 课件 项目2 Numpy数值计算实战_第3页
数据分析基础 课件 项目2 Numpy数值计算实战_第4页
数据分析基础 课件 项目2 Numpy数值计算实战_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

任务

2.1

数据的读取与显示1知识准备2任务描述任务实施32.1

数据的读取与显示Numpy的文件读取/写入主要有二进制的文件读/写和文件列表形式的数据读/写两种形式。Numpy提供了若干函数,可以将结果保存到二进制或文本文件中。除此之外,Numpy还提供了许多从文件读取数据并将其转换为数组的方法。【任务描述】Numpy数值计算实战【知识准备】Numpy对二进制的文件读取与写入分别采用了load和save方法,对文本文件采用loadtxt方法进行读取,采用savetxt方法对文本文件进行写入操作。学会读取/写入文件是利用Numpy进行数据处理的基础。除此之外,Numpy还提供了很多函数方法将数据转换成常用的数组格式。Numpy数值计算实战(1)save函数以二进制的格式保存数据,load函数从二进制的文件中读取数据,save函数的语法格式如下:Numpy.save(file,arr,allow_pickle=True,

fix_imports=True)参数file接收str,表示要保存的文件的名称,需要指定文件保存的路径,如果未设置,那么将会保存到默认路径下面。参数arr接收array_like,表示需要保存的数组。save函数就是将数组arr保存至名称为“file”的文件中,其文件的扩展名.npy是系统自动添加的。将二进制数据保存到文件中代码如下。Numpy数值计算实战【任务实施】In[1]:import

numpy

as

np

#

导入NumPy库arr

=

np.arange(100).reshape(10,

10)

#

创建一个数组np.save('D:\Anaconda\csv/save_arr',

arr)

#

保存数组print('保存的数组为:\n',

arr)out[1]:

保存的数组为:[[01234567

8

9][10111213141516171819][20212223242526272829][30313233343536373839][40414243444546474849][50515253545556575859][60616263646566676869][70717273747576777879][80818283848586878889][909192939495969798

99]](2)如果将多个数组保存到一个文件中,那么可以使用savez函数,其文件的扩展名为.npz,代码如下:In[2]:arr1=np.array([[1,3,5],[2,4,6]])arr2=np.arange(10,20,2)np.savez('D:\Anaconda\csv/savez_arr',arr1,

arr2)print('保存的数组1为:',

arr1)print('保存的数组2为:',

arr2)out[2]:

保存的数组1为:

[[1

3

5]

[2

4

6]]保存的数组2为:

[10

12

14

16

18]Numpy数值计算实战【任务实施】Numpy数值计算实战【任务实施】(3)当需要读取二进制文件时,可以使用load函数,用文件名作为参数,存储时可以省略扩展名,但读取时不能省略扩展名,代码如下:In[3]:#

读取含有单个数组的文件loaded_data=

np.load('D:\Anaconda\csv/save_arr.npy')print('读取的数组为:\n',

loaded_data)out[3]:

读取的数组为:[[0 1 2 3 4 5 6 7 8 9][10111213141516171819][202122232425262728

29][30313233343536373839][404142434445464748

49][50515253545556575859][606162636465666768

69][70717273747576777879][808182838485868788

89][909192939495969798

99]]In[4]:loaded_data1=

np.load('D:\Anaconda\csv/savez_arr.npz')print('读取的数组1为:\n',

loaded_data1['arr_0'])print('读取的数组2为:',

loaded_data1['arr_1'])out[4]:

读取的数组1为:[[1

3

5][2

4

6]]读取的数组2为:

[10

12

14

16

18]

Numpy.savetxt(fname,X,fmt='%.18e',delimiter='',newline='\n',header='',

footer='',comments='#',

encoding=None)Numpy数值计算实战【任务实施】(4)在实际的数据分析任务中,更多地是使用文本格式的数据,如TXT或CSV格式,因此通常会使用savetxt函数、loadtxt函数和genfromtxt函数执行对文本格式数据的读取任务。savetxt函数可将数组写到以某种分隔符隔开的文本文件中,其基本使用格式如下。参数fname接收str,表示文件名。参数X接收array_like,表示数组数据。参数delimiter接收str,表示数据分隔符。Numpy数值计算实战【任务实施】loadtxt函数执行的是相反的操作,即将文件加载到一个二维数组中,其基本使用格式如下。Numpy.loadtxt(fname,dtype=<class'float'>,comments='#',delimiter=None,converters=None,skiprows=0,usecols=None,unpack=False,ndmin=0,encoding='bytes',max_rows=None,*,like=None)loadtxt函数的常用参数主要有两个,分别是fname和delimiter。参数fname接收str,表示需要读取的文件、文件名或生成器。参数delimiter接收str,表示用于分隔数值的分隔符。#对文件进行存储与读取,代码如下:In[5]:arr=np.arange(10,15,0.5).reshape(5,

-1)print('创建的数组为:\n',

arr)#

fmt='%d'表示保存为整数np.savetxt('D:\Anaconda\csv/arr.txt',arr,fmt='%d',delimiter=',')#

读入的时候也需要指定逗号分隔loaded_data=np.loadtxt('D:\Anaconda\csv/arr.txt',delimiter=',')print('读取的数组为:\n',

loaded_data)Out[5]:创建的数组为:

[[10. 10.5]

[11.11.5][12. 12.5][13.13.5][14.

14.5]]读取的数组为:[[10.

10.]

[11.

11.]

[12.

12.][13.13.][14.

14.]]任务2.2

利用Numpy进行统计分析1知识准备2任务描述任务实施3项目小结4技能训练52.2

利用Numpy进行统计分析【任务描述】在Numpy中,数组计算十分简单和快速。通常比python数组计算快许多,特别是在进行数组统计和分析的时候。利用Numpy中常见的函数进行统计分析还可以对数据进行排序,去重等操作。Numpy数值计算实战【知识准备】在Numpy中,除了可以使用通用函数对数组进行比较、逻辑等运算之外,还可以使用统计函数对数组进行排序、去重、求最大和最小值以及求均值等统计分析。Numpy数值计算实战1

排序函数Numpy的排序方式主要可以概括为直接排序和间接排序两种。直接排序指对数值直接进行排序;间接排序是指根据一个或多个键对数据集进行排序。在Numpy中,直接排序通常是使用sort函数,间接排序通常是使用argsort函数和lexsort函数,代码如下所示:Numpy数值计算实战【任务实施】In[6]:np.random.seed(42)

#

设置随机种子arr

=

np.random.randint(1,

10,

size=10)

#

生成随机数组print('创建的数组为:',

arr)arr.sort()

#

直接排序print('排序后数组为:',

arr)out[6]:

创建的数组为:

[7

4

8

5

7

3

7

8

5

4]排序后数组为:

[3

4

4

5

5

7

7

7

8

8]Numpy数值计算实战【任务实施】sort

函数是较为常用的排序方法,无返回值。如果目标函数是一个视图,那么原始数据将会被修改。当使用sort函数排序时,用户可以指定一个axis参数,使得sort函数可以沿着指定轴对数据集进行排序,代码如下所示:In[7]:np.random.seed(42)

#

设置随机种子arr

=

np.random.randint(1,

10,

size=(3,

3))

#

生成3行3列的随机数组print('创建的数组为:\n',

arr)arr.sort(axis=1)

#

沿着横轴排序print('排序后数组为:\n',

arr)arr.sort(axis=0)

#

沿着纵轴排序print('排序后数组为:\n',

arr)out[7]:

创建的数组为:[[4

5

7][8

3

1][7

9

6]]排序后数组为:[[4

5

7][1

3

8][6

7

9]]排序后数组为:[[1

3

7][4

5

8][6

7

9]]Numpy数值计算实战【任务实施】使用argsort函数和lexsort函数,可以在给定一个或多个键时,得到一个由整数构成的索引数组,索引值表示数据在新的序列中的位置,代码如下所示:#

返回值为重新排序值的下标In[8]:arr=np.array([5,7,6,9,

0,4])print('创建的数组为:',arr)print('排序后数组为:',

arr.argsort())out[8]:

创建的数组为:

[5

7

6

9

0

4]排序后数组为:

[4

5

0

2

1

3]lexsort函数可以一次性对满足多个键的数组执行间接排序。如下代码所示。In[9]:a=np.array([3,2,6,4,

5])b=np.array([50,30,40,20,

10])c=np.array([400,300,600,100,

200])d

=

np.lexsort((a,

b,

c))

#

lexsort函数只接受一个参数,即(a,b,c)#

多个键值排序是按照最后一个传入数据计算的print('排序后数组为:\n',

list(zip(a[d],

b[d],

c[d])))Out[9]:

排序后数组为:

[(4,

20,

100),

(5,

10,

200),

(2,

30,

300),

(3,

50,

400),

(6,

40,

600)]2

删除重复值与生成重复值在统计分析的工作中,难免会出现“脏”数据的情况。重复数据就是“脏”数据的情况之一。如果一个一个地手动删除,那么将会耗时费力且效率低。在Numpy中,可以通过unique函数查找出数组中的唯一值并返回已排序的结果,代码如下所示:Numpy数值计算实战【任务实施】In[10]:

#

创建数值型数据ints=np.array([1,2,3,4,4,5,6,6,7,8,8,9,

10])print('创建的数组为:',

ints)print('去重后的数组为:',

np.unique(ints))Out[10]:

创建的数组为:

[

1

2

3

4

4

5

6

6

7

8

8

9

10]去重后的数组为:

[

1

2

3

4

5

6

7

8

9

10]另一种情况,在统计分析中也经常遇到,即需要将一个数据或者数组生成多次重复。在Numpy中主要使用tile函数和repeat函数实现数据重复,代码如下所示:Numpy数值计算实战【任务实施】In[11]:arr=

np.arange(5)print('创建的数组为:',

arr)print('重复后数组为:',

np.tile(arr,

3))

#

对数组进行重复Out[11]:

创建的数组为:

[0

1

2

3

4]重复后数组为:

[0

1

2

3

4

0

1

2

3

4

0

1

2

3

4]Numpy数值计算实战【任务实施】tile函数的基本使用格式如下:Numpy.tile(AC,

reps)参数AC接收array,表示输入的数组。参数reps接收array,表示指定数组的重复次数。第二个生成重复的函数repeat函数的基本使用格式如下:Numpy.repeat(AC,Reps,

axis=None)参数AC接收array,表示输入的数组。参数Reps接收int或整数的数组,表示每个元素的重复次数。参数axis接收int,表示用于指定沿着哪个轴进行重复。Numpy数值计算实战【任务实施】使用repeat函数实现数据重复,代码如下所示:In[12]:

np.random.seed(42)

#

设置随机种子arr=np.random.randint(0,10,size=(3,

3))print('创建的数组为:\n',arr)print('重复后数组为:\n',

arr.repeat(2,

axis=0))

#

按行进行元素重复print('重复后数组为:\n',

arr.repeat(2,

axis=1))

#

按列进行元素重复Out[12]:

创建的数组为:[[6

3

7][4

6

9][2

6

7]]重复后数组为:

[[6

3

7][6

3

7][4

6

9][4

6

9][2

6

7][2

6

7]]重复后数组为:

[[6

6

3

3

7

7][4

4

6

6

9

9][2

2

6

6

7

7]]注意:第一个tile函数和第二个repeat函数的主要区别在于,tile函数是对整个数组进行重复操作,repeat函数是对可以数组中的每个元素进行重复操作。3Numpy中常用的统计函数在Numpy中,有许多可以用于统计分析的函数。常见的统计函数有sum、mean、std、var、min和max等。Numpy

常用统计函数的描述如表2-1所示。几乎所有的统计函数在针对二维数组计算的时候都需要注意轴的概念。当axis参数为0时,表示沿着纵轴进行计算;当axis为1时,表示沿着横轴进行计算。默认情况下,函数并不按照任一轴向

计算,而是计算一个总值。Numpy数值计算实战【任务实施】Numpy数值计算实战【任务实施】表2-1

Numpy

常用统计函数的描述函数名称用途说明Sum计算数组和Mean计算数组平均值Min计算数组元素中的最小值Max计算数组元素中的最大值Std计算数组的标准差Var计算数组的方差Argmin返回数组最小值的索引Argmax返回数组最大值的索引Cumsum返回数组中所有元素的累计和Cumprod返回数组中所有元素的累计积Numpy数值计算实战【任务实施】常用的统计函数的使用代码如下所示:In[13]:arr=np.arange(20).reshape(4,

5)print('创建的数组为:\n',

arr)print('数组的和为:',

np.sum(arr)) #

计算数组的和print('数组横轴的和为:',

arr.sum(axis=0))print('数组纵轴的和为:',

arr.sum(axis=1))#

沿着横轴计算求和#

沿着纵轴计算求和print('数组的均值为:',

np.mean(arr))#

计算数组平均值print('数组横轴的均值为:',

arr.mean(axis=0))print('数组纵轴的均值为:',

arr.mean(axis=1))#

沿着横轴计算数组均值#

沿着纵轴计算数组均值print('数组的标准差为:',

np.std(arr))print('数组的方差为:',

np.var(arr))print('数组的最小值为:',

np.min(arr))print('数组的最大值为:',

np.max(arr))#

计算数组标准差#

计算数组方差#

计算数组最小值#

计算数组最大值print('数组的最小元素 为:',

np.argmin(arr)) #

返回数组最小元素

的索引print('数组的最大元素

为:',np.argmax(arr)) #

返回数组最大元素的索引Numpy数值计算实战【任务实施】常用的统计函数的使用代码如下所示:1 2 3 4][

56 7 8 9][10111213

14]Out[13]:

创建的数组为:

[[

0[151617

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论