python数据分析及展⽰(⼀)
⼀、IDE选择
Anaconda软件:开源免费,www.anaconda下载,根据系统进⾏安装。由于下载速度慢,可以去下载。
Spyder软件设置:Tools-Preferences-Syntax coloring-Scheme设置成Monokai,保护眼睛。
Spyder⾥⾯有⼀个IPython,交互式调试⼯具。
⼆、NumPy库
1. 数据的维度:⼀组数据的组织形式。
从⼀个数据到⼀组数据,表达多种数据含义。
中文网页设计模板下载⼀维数据:由对等关系的有序或⽆序数据组成,采⽤线性⽅式组织,对应列表、集合、数组等。
⼆维数据:由多个⼀维数据构成,是⼀维数据的组合形式,字典或数据表⽰格式,如json等。
多维数据:由⼀维或⼆维数据在新维度上拓展形成。
⾼维数据:仅利⽤最基本的⼆元关系展⽰数据间的复杂结构,如键值对。
2. NumPy库
开源的Python科学计算基础库。
import numpy as np  引⽤模块的别名,建议这样的别名。
为什么需要⼀个额外的数据类型呢?如:N维数组对象ndarray,⼀维数组np.array([0,1,2,3,4])
好处:a 数组对象可以去掉元素间运算所需的循环,使⼀维向量更像单个数据。
b 设置专门的数组对象,经过优化,可以提升这类应⽤的运算速度,底层是C语⾔,故效率⾼。
c 科学计算中,⼀个维度所有数据的类型往往相同,数组对象采⽤相同的数据类型,有助于节省运算和存储空间。
ndarray数组⼀般要求所有元素类型相同,数组下标从0开始。
ndarray对象的属性
属性说明
.ndim    秩,即轴的数量或维度的数量
.shape    ndarray对象的尺度,对于矩阵,n⾏m列
.size      ndarray对象元素的个数,相当于.shape中n*m的值
.dtype    ndarray对象的元素类型
.itemsize ndarray对象中每个元素的⼤⼩,以字节为单位
3. ndarray数组的元素类型
ndarray有多种数据类型,原因是,对元素类型精细定义,有助于NumPy合理使⽤存储空间并优化性能,有助于对程序规模的预测。 ndarray的元素类型(1)
数据类型说明
bool        布尔类型,True或False
intc        与C语⾔中的int类型⼀致,⼀般是int32或int64
intp        ⽤于索引的整数,与C语⾔中ssize_t⼀致,int32或int64
int8        字节长度的整数,取值:[‐128, 127]
int16      16位长度的整数,取值:[‐32768, 32767]
int32      32位长度的整数,取值:[‐231, 231‐1]
int64      64位长度的整数,取值:[‐263, 263‐1]
ndarray的元素类型(2)
数据类型说明
uint8      8位⽆符号整数,取值:[0, 255]
uint16    16位⽆符号整数,取值:[0, 65535]
uint32    32位⽆符号整数,取值:[0, 232‐1]
uint64    64位⽆符号整数,取值:[0, 264‐1]
float16  16位半精度浮点数:1位符号位,5位指数,10位尾数
float32  32位半精度浮点数:1位符号位,8位指数,23位尾数
float64  64位半精度浮点数:1位符号位,11位指数,52位尾数
ndarray的元素类型(3)
数据类型说明
complex64  复数类型,实部和虚部都是32位浮点数
complex128 复数类型,实部和虚部都是64位浮点数
4. ndarray数组的创建
(1)从Python中的列表、元组等类型创建ndarray数组
x = np.array(list/tuple)
x = np.array(list/tuple, dtype=np.float32)
当np.array()不指定dtype时,NumPy将根据数据情况关联⼀个dtype类型
如:x=np.array([0,1,2,3])
(2)使⽤NumPy中函数创建ndarray数组,如:arange, ones, zeros等
函数说明
np.arange(n)        类似range()函数,返回ndarray类型,元素从0到n‐1
np.full(shape,val)  根据shape⽣成⼀个数组,每个元素值都是val
<(n)              创建⼀个正⽅的n*n单位矩阵,对⾓线为1,其余为0
函数说明
np.full_like(a,val)  根据数组a的形状⽣成⼀个数组,每个元素值都是val
python数据分析基础教程答案
(3)使⽤NumPy中其他函数创建ndarray数组
函数说明
np.linspace()      根据起⽌数据等间距地填充数据,形成数组
a=np.linspace(1,10,4)
b=np.linspace(1,10,4,endpoint=False)
atenate((a,b))
5. ndarray数组的变换
⽅法说明
.reshape(shape)      不改变数组元素,返回⼀个shape形状的数组,原数组不变.resize(shape)          与.reshape()功能⼀致,但修改原数组
.swapaxes(ax1,ax2) 将数组n个维度中两个维度进⾏调换
.flatten()                    对数组进⾏降维,返回折叠后的⼀维数组,原数组不变6. ndarray数组的操作
索引:获取数组中特定位置元素的过程
切⽚:获取数组元素⼦集的过程
⼀维数组的索引和切⽚:与Python的列表类似
多维数组的索引:a[1,2,3]
7. ndarray数组的运算
数组与标量之间的运算作⽤于数组的每⼀个元素
NumPy⼀元函数
对ndarray中的数据执⾏元素级运算的函数
函数说明
np.abs(x)  np.fabs(x) 计算数组各元素的绝对值
np.sqrt(x)                  计算数组各元素的平⽅根
np.square(x)            计算数组各元素的平⽅
np.log(x)  np.log10(x)
np.log2(x)                计算数组各元素的⾃然对数、10底对数和2底对数
np.rint(x)                    计算数组各元素的四舍五⼊值
np.sin(x)  np.sinh(x)
np.tan(x)  np.tanh(x)
计算数组各元素的普通型和双曲型三⾓函数
np.sign(x)                  计算数组各元素的符号值,1(+), 0, ‐1(‐)
NumPy⼆元函数
函数说明
+ ‐ * / **                              两个数组各元素进⾏对应运算
np.maximum(x,y)  np.fmax()
np.minimum(x,y) np.fmin()
元素级的最⼤值/最⼩值计算
三、数据存取与函数
1. 数据的CSV⽂件存取
CSV (Comma‐Separated Value, 逗号分隔值)
CSV是⼀种常见的⽂件格式,⽤来存储批量数据
np.savetxt(frame, array,  fmt='%.18e', delimiter=None)
• frame  :  ⽂件、字符串或产⽣器,可以是.gz或.bz2的压缩⽂件
• array  :  存⼊⽂件的数组
• fmt :  写⼊⽂件的格式,例如:%d %.2f %.18e
• delimiter  :  分割字符串,默认是任何空格
a=np.arange(100).reshape(5,20)
np.savetxt('a.csv,a,fmt='%.1f',delimiter=',')
np.loadtxt(frame,  dtype=np.float,  delimiter=None, unpack=False)
sql join的用法
• frame  :  ⽂件、字符串或产⽣器,可以是.gz或.bz2的压缩⽂件
• dtype :  数据类型,可选
• delimiter  :  分割字符串,默认是任何空格
• unpack  :  如果True,读⼊属性将分别写⼊不同变量
b=np.loadtxt('a.csv',dtype=np.int,delimiter=',')
CSV只能有效存储⼀维和⼆维数组
np.savetxt() np.loadtxt()只能有效存取⼀维和⼆维数组
2. 多维数组的存储
• frame  :  ⽂件、字符串
• sep :  数据分割字符串,如果是空串,写⼊⽂件为⼆进制
• format  :  写⼊数据的格式
a=np.arrange(100).reshape(5,10,2)
b.dat',sep=',',format='%d')
np.fromfile(frame, dtype=float, count=‐1, sep='')
• frame  :  ⽂件、字符串
• dtype :  读取的数据类型
• count  :  读⼊元素个数,‐1表⽰读⼊整个⽂件
• sep :  数据分割字符串,如果是空串,写⼊⽂件为⼆进制
c=np.fromfile("b.dat",dtype=np.int,sep=",").reshape(5,10,2)
需要注意:该⽅法需要读取时知道存⼊⽂件时数组的维度和元素类型
可以通过元数据⽂件来存储额外信息
NumPy的便捷⽂件存取
np.save(fname,  array)  或 np.savez(fname,  array)
• fname :  ⽂件名,以.npy为扩展名,压缩扩展名为.npz
• array  :  数组变量
np.load(fname)
• fname :  ⽂件名,以.npy为扩展名,压缩扩展名为.npz
a=np.arrange(100).reshape(5,10,2)
np.save("a.npy",a)
b=np.load("a.npy")
3. numPy的随机数函数
NumPy的random⼦库np.random.*
函数说明
rand(d0,d1,..,dn)              根据d0‐dn创建随机数数组,浮点数,[0,1),均匀分布
randn(d0,d1,..,dn)            根据d0‐dn创建随机数数组,标准正态分布
randint(low[,high,shape])  根据shape创建随机整数或整数数组,范围是[low, high)
seed(s)                              随机数种⼦,s是给定的种⼦值,如果s⼀样,产⽣的随机数相同
b=np.random.randint(100,200,(3,4))
函数说明
shuffle(a)                            根据数组a的第0轴进⾏随排列,改变数组x
permutation(a)                  根据数组a的第0轴产⽣⼀个新的乱序数组,不改变数组x
choice(a[,size,replace,p])  从⼀维数组a中以概率p抽取元素,形成size形状新数组replace表⽰是否可以重⽤元素,默认为False uniform(low,high,size)        产⽣具有均匀分布的数组,low起始值,high结束值,size形状
normal(loc,scale,size)      产⽣具有正态分布的数组,loc均值,scale标准差,size形状
poisson(lam,size)              产⽣具有泊松分布的数组,lam随机事件发⽣率,size形状
4.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中元素的中位数(中值)
5. numPy的梯度函数
函数说明
梯度:连续值之间的变化率,即斜率
XY坐标轴连续三个X坐标对应的Y轴值:a, b, c,其中,b的梯度是: (c‐a)/2
四、图像的处理
1. 图像的数组表⽰
RGB三个颜⾊通道的变化和叠加得到各种颜⾊,其中
• R 红⾊,取值范围,0‐255
• G 绿⾊,取值范围,0‐255
• B 蓝⾊,取值范围,0‐255
RGB形成的颜⾊包括了⼈类视⼒所能感知的所有颜⾊。
PIL, Python Image Library
PIL库是⼀个具有强⼤图像处理能⼒的第三⽅库
在命令⾏下的安装⽅法: pip install pillow
from PIL import Image
Image是PIL库中代表⼀个图像的类(对象)
图像是⼀个三维数组,维度分别是⾼度、宽度和像素RGB值from PIL import  Image
import munpy as np
im=np.array(Image.open("D:/pycodes/beijing.jpg"))
print(im.shape,im.dtype)
输出为(669,1012,3) uint8
2. 图像的变换
c语言递归调用函数
a= np.array(Image.open("D:/pycodes/fcity.jpg").convert(‘L’)) b=255-a
怎么启动dockerim=Image.fromarray(b.astype('uint8))
im.save("D:/pycodes/fcity3.jpg")
3. 图像的⼿绘效果
⼿绘效果的⼏个特征:
• ⿊⽩灰⾊
• 边界线条较重
• 相同或相近⾊彩趋于⽩⾊
• 略有光源效果
1from PIL import Image
2import numpy as np
3
4 a = np.asarray(Image.open('./beijing.jpg').convert('L')).astype('float')
5
6 depth = 10.                      # (0-100)
7 grad = np.gradient(a)            #取图像灰度的梯度值
8 grad_x, grad_y = grad              #分别取横纵图像梯度值
9 grad_x = grad_x*depth/100.
10 grad_y = grad_y*depth/100.
11 A = np.sqrt(grad_x**2 + grad_y**2 + 1.)
12 uni_x = grad_x/A
13 uni_y = grad_y/A
14 uni_z = 1./A
15
16 vec_el = np.pi/2.2                  # 光源的俯视⾓度,弧度值
17 vec_az = np.pi/4.                    # 光源的⽅位⾓度,弧度值
18 dx = np.cos(vec_el)*np.cos(vec_az)  #光源对x 轴的影响
19 dy = np.cos(vec_el)*np.sin(vec_az)  #光源对y 轴的影响
20 dz = np.sin(vec_el)              #光源对z 轴的影响
21
22 b = 255*(dx*uni_x + dy*uni_y + dz*uni_z)    #光源归⼀化
23 b = b.clip(0,255)
24
25 im = Image.fromarray(b.astype('uint8'))  #重构图像
前端框架easyui怎么使用26 im.save('./beijingHD.jpg')

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。