Scipy

import numpy as np
import matplotlib.pyplot as plt
import scipy.misc as misc # 图片处理 miscellaneous 乱七八糟
# 在导入scipy的时候 可能会报错 pip install scipy -i https://mirrors.aliyun.com/pypi/simple/
图片的灰度化处理
# 图片的灰度化处理 其实就是 把 最后一个维度的[r,g,b]  变成一个值
# 取最大值 取平均值 加权平均值 [r:g:b] [0.64:0.35:0.01]
cat.max()  # max()是整个数组中的最大值
cat.max(axis=-1)
cat.max(axis=-1).shape
# 最大值
# plt.imshow(cat.max(axis=-1),cmap='gay')  # 需要设置颜色映射 spring 值故意写错 报错信息中会提示可用的颜色映射
plt.imshow(cat.max(axis=-1),cmap='gray')  #
# 平均值
cat.mean(axis=-1)
plt.imshow(cat.mean(axis=-1),cmap='gray')
# 加权平均值 权重 [r:g:b] [0.64:0.35:0.01]  1 [3,4] [[],[]]
cat
weight = np.array([0.64,0.35,0.01])
cat2 = np.dot(cat,weight)
plt.imshow(cat2,cmap="gray")

通过傅里叶变换实现图片降噪

scipy.fftpack模块用来计算快速傅里叶变换
速度比传统傅里叶变换更快,是对之前算法的改进
图片是二维数据,注意使用fftpack的二维转变方法

from scipy.fftpack import fft2,ifft2
# 傅里叶变换 就是 把描述值的值 变成描述变化的值
moon
fft_moon = fft2(moon)  # 把描述值的值变成 描述变化的值
fft_moon[np.abs(fft_moon) > 2000] = 0  # 把变化大的 找出来 然后让变化归零
fft_moon 
fft_moon  # 处理之后 把描述变化的值 再恢复成描述值的值
ifft_moon = np.real(ifft2(fft_moon))
plt.figure(figsize=(12,9))
plt.imshow(ifft_moon,cmap='gray')
plt.imsave('after.png',ifft_moon,cmap='gray')

图片进行过滤
添加噪声,对噪声图片使用ndimage中的高斯滤波、中值滤波、signal中维纳滤波进行处理
使图片变清楚

添加噪声

加载图片,使用灰色图片misc.face()添加噪声

face = misc.face(gray=True)
plt.imshow(face,cmap='gray')
face.shape
noise = np.random.randint(0,100,size=face.shape)
plt.imshow(noise,cmap='gray')
noise_face = face + noise
plt.imshow(noise_face,cmap='gray')

ndimage处理噪声

median中值滤波参数size:给出在每个元素上从输入数组中取出的形状位置,定义过滤器功能的输入

gaussian高斯滤波参数sigma:高斯核的标准偏差

signal维纳滤波参数mysize:滤镜尺寸的标量

import scipy.ndimage as ndimage
# size 设定了选取范围的大小
mf_data = ndimage.median_filter(noise_face,size=5)
mf_data = ndimage.median_filter(moon,size=5)
plt.imshow(mf_data,cmap='gray')
# 高斯滤波 sigma也是指定范围
gf_data = ndimage.gaussian_filter(noise_face,sigma=2)
gf_data = ndimage.gaussian_filter(moon,sigma=2)
plt.imshow(gf_data,cmap='gray')# 高斯滤波 sigma也是指定范围
gf_data = ndimage.gaussian_filter(noise_face,sigma=2)
gf_data = ndimage.gaussian_filter(moon,sigma=2)
plt.imshow(gf_data,cmap='gray')
# 维也纳滤波 是选定一个范围 然后 通过调整值 让方差尽量小
from scipy.signal import wiener
w_data = wiener(noise_face,mysize=5)
w_data = wiener(moon,mysize=5)
plt.imshow(w_data,cmap='gray')

使用scipy.ndimage图片处理

使用scipy.misc.face(gray=True)获取图片,使用ndimage移动坐标、旋转图片、切割图片、缩放图片

import scipy.ndimage as ndimage
import scipy.misc
face = scipy.misc.face(gray=True)
face
plt.imshow(face,cmap='gray')
# shift 移动矩阵 参数 input要移动的矩阵  shift移动的值
shift1 = ndimage.shift(input=face,shift=100)  # 往右往下都是100
shift1 = ndimage.shift(input=face,shift=[-100,200])  # 先上下 后左右
shift1
# 参数 mode='constant'用来指定填充模式 默认constant是用0来填充  {'reflect', 'constant', 'nearest', 'mirror', 'wrap'}
shift1 = ndimage.shift(input=face,shift=[-100,200],mode='wrap')
plt.imshow(shift1,cmap='gray')
# 用来旋转图片 input要旋转的矩阵 angle旋转多少度
# rotate1 = ndimage.rotate(input=face,angle=45)
rotate1 = ndimage.rotate(input=face,angle=90)
rotate1
plt.imshow(rotate1,cmap='gray')
# 对矩阵进行缩放 input要缩放的矩阵 zoom放大的倍数
# z1 = ndimage.zoom(input=face,zoom=0.5)
# z1 = ndimage.zoom(input=face,zoom=2)
# z1 = ndimage.zoom(input=face,zoom=[0.5,1])
# z1 = ndimage.zoom(input=face,zoom=[1,0.5])
z1 = ndimage.zoom(input=face,zoom=[500/768,500/1024])  # 500,500
z1
plt.imshow(z1,cmap='gray')
plt.imshow(face[:500,400:900],cmap='gray')
face = scipy.misc.face()
plt.imshow(face)

求解圆周率

因为圆形的面积为 pi * r**2

只要求得面积 即可得到pi

想得到圆形面积 可以先绘制一个圆形 然后求积分

对函数(1 - x2)0.5进行积分

# x**2 + y**2 = 1
# y**2 = 1 - x**2
# y = (1-x**2)**0.5
f = lambda x:(1-x**2)**0.5
x = np.linspace(-1,1,100)
x
y = f(x)
y
plt.figure(figsize=(5,5))
plt.plot(x,y)
plt.plot(x,-y)

求圆的面积 (使用scipy.integrate进行积分,调用quad()方法)

import scipy.integrate as integrate
# func 对应关系(函数), a是x轴的起始值, b是x轴的终止值
res,error = integrate.quad(f,-1,1)  # 半径是1的圆形 面积 pi 
print('圆周率是:',res*2,'误差是:',error*2)

线形图

简单的Series图表示例,plot()

# 正弦曲线
x = np.linspace(0,2*np.pi,100)
y = np.sin(x)
s = Series(data=y,index=x)
s.plot()

简单的DataFrame图表示例,plot()

x = np.linspace(0,2*np.pi,100)
df = DataFrame(data={'sin':np.sin(x),'cos':np.cos(x)},index=x)
df
df.plot()

柱状图

Series柱状图示例,kind = 'bar'/'barh'

s = Series(data=np.random.randint(0,10,size=5),index=list('abcde'))
# s.plot(kind='bar')
s.plot(kind='barh')

DataFrame柱状图示例

df = DataFrame(np.random.randint(0,10,size=(8,4)),index=list('abcdefgh'),columns=list('ABCD'))
df.plot(kind='bar')
df.plot(kind='barh')

直方图

rondom生成随机数百分比直方图,调用hist方法

s = Series(np.random.randint(0,10,size=10))
s
s.hist()
s = Series(np.random.normal(loc=0,scale=5,size=10000))
s.hist()

随机数百分比密度图s.plot(kind = 'kde')

s.plot(kind='kde')

这两种图表经常被画在一起。直方图以规格化形式给出(以便给出面元化密度),然后再在其上绘制核密度估计。接下来来看一个由两个不同的标准正态分布组成的的双峰分布

np.random.normal()正太分布函数

直方图hist,函数中必须添加属性density = True

ndarr1 = np.random.normal(loc=-10,scale=5,size=5000)
ndarr2 = np.random.normal(loc=15,scale=2,size=5000)
ndarr = np.concatenate([ndarr1,ndarr2])
s = Series(ndarr)
s.plot(kind='kde')  # 核心 密度 估计 用来展示某个位置出现内容的概率的估计值
s.hist(density=True)  # density表示直方图也以 密度概率的值来展示  hist用来展示某个位置出现内容的实际频率

散布图

散布图 散布图是观察两个一维数据数列之间的关系的有效方法

注意使用kind = 'scatter'时,给明标签columns

df = DataFrame(np.random.randint(0,150,size=(20,3)),columns=['python','math','eng'])
df
df.plot(kind='scatter',x='python',y='eng')
np.random.randint(-10,10,1)[0]
df['php'] = df['python'].map(lambda x: x*0.9+np.random.randint(-10,10,1)[0])
df.plot(kind='scatter',x='python',y='php')
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,491评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,856评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,745评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,196评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,073评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,112评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,531评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,215评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,485评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,578评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,356评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,215评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,583评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,898评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,174评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,497评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,697评论 2 335

推荐阅读更多精彩内容