Python数据分析与展示:NumPy数据存取与函数

NumPy数据存取与函数


数据的CSV文件存取

CSV:(Comma-Separated Value,逗号分隔值)

CSV是一种常见的文件格式,用来储存批量的数据。
Python数据分析与展示:NumPy数据存取与函数_第1张图片

CSV文件–百度百科


将数据写入CSV文件:

np.savetxt(frame,array,fmt='%.18e',delimiter=None)
  • frame:文件、字符串或产生器,可以是.gz或.bz2的压缩文件。
  • array:存入文件的数组。
  • fmt:写入文件的格式,例如:%d %.2f %.18e。
  • delimiter:分割字符串,默认为任何空格。

Python数据分析与展示:NumPy数据存取与函数_第2张图片

Python数据分析与展示:NumPy数据存取与函数_第3张图片

将CSV中的数据读入到NumPy中的数组类型:

np.loadtxt(frame,dtype=np.float,delimiter=None,unpack=False)
  • frame:文件、字符串、或产生器,可以是.gz或.bz2的压缩文件。
  • dtype:数据类型,可选。#在loadtxt中,我们需要将CSV中的每一个元素由字符串变为一个特定的格式,即用到dtype来指定。(默认状态下为浮点数类型)
  • delimiter:分割字符串,默认是任何空格。
  • unpack:如果True,读入属性将分别写入不同变量。#将unpack默认为False,即默认为读入一个数组。

Python数据分析与展示:NumPy数据存取与函数_第4张图片


CSV文件的局限性:

CSV只能有效存储一维和二维数组。

多维数据的存取

a.tofile(frame,sep='',format='%s')
  • frame:文件、字符串。
  • sep:数据分割字符串,如果是空串(即不指定sep时),写入文件为二进制格式。
  • format:写入数据的格式。

Python数据分析与展示:NumPy数据存取与函数_第5张图片

Python数据分析与展示:NumPy数据存取与函数_第6张图片

#事实上二进制文件相较于文本文件占用了更小的空间,如果掌握了显示字符的编码以及字节之间的关系,就能理解图中二进制格式的数据。我们可以将它作为数据备份的一种方式。

np.fromfile(frame,dtype=float,count=-1,sep='')
  • frame:文件、字符串。
  • dtype:读取的数据类型。#无论什么样的方法,从文件中读取元素的时候总要制定一个数据类型,只有这样才能正确的解析元素的内容。(默认情况下为float类型)
  • count:读入元素的个数,-1表示读入一整个文件。
  • sep:数据分割字符串,如果为空串,写入文件为二进制。

Python数据分析与展示:NumPy数据存取与函数_第7张图片

#刚开始创建的c为一个一维数组,要想使得c与a的形状相同,我们需要用.reshape()来制定c的形状。(即将数组写入文件之后,其中的维度信息丢失,我们需要知道维度信息才能够有效地还原原数组)。

Python数据分析与展示:NumPy数据存取与函数_第8张图片

需要注意:a.tofile()和np.fromfile()需要配合使用。

那我们怎么才能知道元素存储的类型和维度???

可以通过元数据文件来存储额外信息。(再写一个文件,将要存储的数组的每个元素类型以及它的维度作为元信息存储起来。有效但显然复杂且麻烦)。

NumPy的便捷文件存取

np.save(frame,array) 或np.savez(frame,array)#savez()方法是将数组以压缩的格式存入文件中。
  • frame:文件名,以.npy为扩展名,压缩扩展名为.npz。#这种方法的写入和读取必须基于NumPy自定义的文件格式。
  • array:数组变量。
np.load(frame)#可以直接还原回数组的维度以及相关信息。
  • frame:文件名,以.npy为扩展名,压缩扩展名为.npz。

Python数据分析与展示:NumPy数据存取与函数_第9张图片

#用二进制工具打开存储的a.npy文件,我们可以看到文件事实上是以二进制的形式将数组存储起来,而在这个文件的最开始,用显式的方式将数组的元信息写到了第一行中,这样在NumPy的load()函数读取这个文件时,可以通过解析第一行的元信息,得到文件中储存数据的大致形状和适用类型,最终有效地还原回一个数组。

使用什么样的方法来存取文件,需要针对不同的使用场景来判断。


Numpy的随机数函数

Numpy的random子库

函数 说明
rand(d0,d1,…,dn) 跟据d0-dn创建随机数数组,浮点数,[0,1),均匀分布
rand(d0,d1,…,dn) 跟据d0-dn创建随机数数组,其中元素的选择符合标准正态分布
randint(low[,high=None, size=None, dtype=’l’]) 跟据shape即数组维度创建随机整数或者整数数组,范围是[low,high),均匀分布,size为元素的个数,dtype为元素的类型
seed(s) 随机数种子,s是给定的种子值
shuffle(a) 跟据数组a的第一轴(即最外维度)进行行随机排列,改变数组a
permutation(a) 跟据数组a的第一轴产生一个新的乱序数组,不改变数组a
choice(a[,size,replace,p]) 从一维数组a中以概率p抽取元素,形成size形状的新数组。replace表示是否可以重用元素,默认为True
uniform(low,high,size) 产生具有均匀分布的数组,low起始值,high结束值,size形状
normal(loc,scale,size) 产生具有正态分布的数组,loc均值,scale标准差,size形状
poisson(lam,size) 产生具有泊松分布的数组,lam随机事件发生率,size形状

Python数据分析与展示:NumPy数据存取与函数_第10张图片

Python数据分析与展示:NumPy数据存取与函数_第11张图片

Python数据分析与展示:NumPy数据存取与函数_第12张图片

#通过设定和重复使用同一个随机数种子,我们可以在测试的时候产生相同的随机数数组。

Python数据分析与展示:NumPy数据存取与函数_第13张图片

Python数据分析与展示:NumPy数据存取与函数_第14张图片

#p=b/np.sum(b) 表示的是元素的值越大,其被抽取到的概率越高。

Python数据分析与展示:NumPy数据存取与函数_第15张图片


NumPy的统计函数

统计函数,能够对数组中的数据进行统计运算的函数。

axis=None是统计函数的标配参数,默认情况下不输入就是对整个数组所有元素进行统计计算,如果给定了轴,就是对轴上的元素进行相关计算。

函数 说明
sum(a,axis=None) 跟据给定轴axis计算数组a相关元素之和,axis整数或者元组,即对第n维所有元素求和
mean(a,axis=None) 跟据给定轴axis计算数组a相关元素的期望,axis整数或者元组
average(a,axis=None,weights=None) 跟据给定轴axis计算数组a相关元素的加权平均值 weight为权重,若不给出,则按照等权重
std(a,axis=None) 跟据给定轴axis计算数组a相关元素的标准差
var(a,axis=None) 跟据给定轴axis计算数组a相关元素的方差
min(a) max(a) 计算数组a中元素的最小值、最大值
argmin(a) argmax(a) 计算数组a中元素的最小值、最大值的降一维后下标(即是寻找数组中最小值、最大值所在的位置,但这个位置是被扁平化成一维之后的位置
unravel_index(index,shape) 跟据shape将一维下标index转换为多维下标(即对下标的去扁平化,重塑为多维下标
ptp(a) 计算数组a中元素最大值与最小值的差
median(a) 计算数组a中元素的中位数(中值)#中位数的运算使通过公式求得的,结果为一个浮点数

Python数据分析与展示:NumPy数据存取与函数_第16张图片

Python数据分析与展示:NumPy数据存取与函数_第17张图片


NumPy的梯度函数

np.gradient(f) #计算数组中f元素的梯度,当f为多维时,返回每个维度梯度

梯度:连续值之间的变化率,即斜率。

XY坐标轴连续三个X坐标对应的Y轴值:a,b,c 其中b的梯度为(c-a)/2

Python数据分析与展示:NumPy数据存取与函数_第18张图片

梯度反映了元素的变化率,尤其是在我们进行图像、声音等批量数据处理的时候,有助于我们发现图像或声音的边缘。在变化不平滑的位置,通过梯度的运算,很容易能够发现。在图像处理、声音处理等运算的过程中,gradient()函数能够发挥很大的作用。

#所有视频截图均来自中国大学mooc北京理工大学嵩天老师的课程
《Python数据分析与展示》

你可能感兴趣的:(Python数据分析,python,numpy,数据分析)