python数据分析之numpy学习二
一 数据存取与函数
一维/二维
数据的CSV文件存取
CSV(Comma-Separated Value,逗号分隔值)CSV是一种常见的文件格式,用来存储批量数据。
1 存储 np.savetxt(frame, array, fmt='%.18e', delimiter=None)
参数 | 含义 |
frame | 文件,字符串,或产生器,可以是.gz或.bz2的压缩文件 |
array | 存入文件的数组 |
fmt | 写入文件的格式,如%d %.2f %.18e |
delimiter | 分隔字符串,默认为任何空格 |
可以看出文件的存储以空格分隔数据
以记事本打开(以逗号隔开)
以excel打开(没有逗号,但是每个元素占据不同格)
2 打开文件np.loadtxt(frame, dtype=np.float, delimiter=None, unpack=False)
unpack如果是True,读入属性将分别写入不同变量
3 CSV文件的局限性
CSV文件只能有效存储一维和二维数组。
多维数据的存取
1 数据存储 a.tofile(frame, sep='', format='%s')
参数 | 含义 |
frame | 文件,字符串 |
sep | 数据分隔字符串,如果是空串,写入文件为二进制 |
format | 写入文件的格式 |
为一行数据,没有区分维度
2 数据读取 np.fromfile(frame,dtype=float,count=-1,sep='')
count为读入元素的个数,-1表示读入整个文件
但是该方法读取时需要知道存入文件时数组的维度和元素类型,a.tofile()和np.fromfile()可以配合使用,可以通过元数据文件来存储额外的信息
NumPy的便捷文件存取
np.save(frame,array)或np.savez(frame,array)
参数 | 说明 |
frame | 文件名,以.npy为扩展名,压缩文件为.npz |
array | 数组变量 |
np.load(frame)
用记事本打开之后可以看到维度信息。
二 NumPy的随机数函数
函数 | 说明 |
rand(shape) | 浮点数,【0,1)均匀分布的浮点数,随机数数组 |
randn(shape) | 标准正态分布的随机数数组 |
randint(low,high,shape) | 范围是[low,high),随机整数或整数数组 |
seed(s) | 随机数种子,s是给定的种子值。只要每次调用随机数函数之前都给定相同的种子,所产生的随机数是相同的 |
函数 | 说明 |
shuffle(a) | 根据数组第0轴(最外层)进行随机排列,即最外层之间的顺序发生变化,改变数组a |
permutation(a) | 同shuffle但改变数组a |
choice(a,shape,replace=False,p) | 从一维数组a中以概率p抽取元素,形成shape形状新数组,replace表示是否可以重用数组,默认为True |
函数 | 说明 |
uniform(low,high,shape) | 产生均匀分布的数组 |
normal(loc, scale, shape) | 产生具有正态分布的数组,loc为均值,scale为标准差. |
poisson(lam,shape) | 产生具有泊松分布的数组,lam为随机事件发生率,size为形状 |
三 Numpy的统计函数
函数 | 说明 |
sum(a,axis=None) | 根据给定轴axis计算数组a的相关元素之和,axis为整数或元组 |
mean(a,axis=None) | 根据给定轴axis计算数组a的相关元素的期望,axis为整数或元组 |
average(a,axis=None,weights=None) | 根据给定轴axis计算数组a的相关元素加权平均值 |
std(a,axis=None) | 根据给定轴axis计算数组a的相关元素标准差 |
var(a,axis=None) | 根据给定轴axis计算数组a的相关元素方差 |
axis=None是默认参数
函数 | 说明 |
min(a) max(a) | 计算数组元素a中的最大值,最小值 |
argmin(a) argmax(a) | 计算数组a中元素最小值,最大值的降一维后下标 |
unravel_index(index,shape) | 根据shape将一维下标index转换为多维下标 |
ptp(a) | 计算数组a中元素最大值与最小值的差 |
median(a) | 计算数组a中元素的中位数(中值) |
四 Numpy的梯度函数
函数 | 说明 |
np.gradient(f) | 计算数组f中元素的梯度,当f为多维数组时,返回每个数组的梯度 |
梯度:连续值之间的变化率,即斜率。
XY坐标轴连续三个X坐标对应的Y轴值:a,b,c。则b的梯度为(c-a)/2
五 图像
图像一般使用RGB色彩模式,即每个像素的颜色由红,绿,蓝组成。
RGB三个颜色通道的变化和叠加得到各种颜色,其中R(0-255),G(0-255),B(0-255)
PIL库是一个具有很强大图像处理能力的第三方库。 from PIL import Image
Image是PIL库中代表一个图像的类(对象)
图像是一个由像素组成的二维矩阵,每个元素是一个RGB值(3个字节),即每个图像是由三个字节作为元素组成的二维矩阵。
1 图像的数组表示
图像是一个三维数组,维度分别是高度,宽度和像素RGB值。
2图像的变换
读入图像之后,获取像素RGB值,修改后保存为新的文件。
图像变换的基本流程
首先打开一个图像,然后对其RGB值进行运算,再把运算后的数组生成一个图像类型保存为文件。
convert指的是将彩色图片变化为灰度值的图片,生成二维数组而不是三维数组,每个元素不对应RGB的值,而是对应一个灰度值。