Python数据可视化编程(三)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_40006058/article/details/79738984

导入图像数据到numpy数组

"""
导入图像数据到numpy数组
"""
#method one
import scipy.misc
import matplotlib.pyplot as plt
ascent = scipy.misc.ascent()
plt.gray()
plt.imshow(ascent)
plt.colorbar()
plt.show()       
#检查对象
print ascent.shape
print ascent.max()
print ascent.dtype

#method two
import numpy
import Image
import matplotlib.pyplot as plt
bug = Image.open('image.png')
arr = numpy.array(bug.getdata(), numpy.unit8).reshape(bug.size[1], bug.size(0), 3)
plt.gray()
plt.imshow(arr)
plt.colorbar()
plt.show() 

#method three 读取大图像
import numpy
file_name = 'image.png'
image = numpy.memmap(file_name, dtype = numpy.unit8, shape = (375, 500))

这里写图片描述

生成可控的随机数据集合

"""
生成可控的随机数据集合
"""
import random
import matplotlib
import matplotlib.pyplot as plt

size=1000
bucket=100
plt.figure()
matplotlib.rcParams.update({'font.size': 7})
#[0,1)之间的随机变量
plt.subplot(621)
plt.xlabel("random.random")
res = [random.random() for _a in xrange(1,size)]
plt.hist(res,bucket)
#均匀分布的随机变量
plt.subplot(622)
plt.xlabel("random.uniform")
a=1
b=size
res= [random.uniform(a,b) for _a in xrange(1,size)]
plt.hist(res,bucket)
#三角形分部
plt.subplot(623)
plt.xlabel("random.triangular")
low=1
high = size
res = [random.triangular(low,high) for _A in xrange(1, size)]
plt.hist(res,bucket)
beta分布两个参数都要大于0,返回值在0~1之间
plt.subplot(624)
plt.xlabel("random.betavariate")
alpha =1
beta =10
res=[random.betavariate(alpha,beta) for _a in xrange(1,size)]
plt.hist(res,bucket)
#指数分布
plt.subplot(625)
plt.xlabel("random.expovariate")
lambd = 1.0/((size+1)/2)
res=[random.expovariate(lambd) for _a in xrange(1,size)]
plt.hist(res,bucket)
#伽马分布
plt.subplot(626)
plt.xlabel("random.gammavariate")
alpha=1
beta=10
res=[random.gammavariate(alpha,beta) for _a in xrange(1,size)]
plt.hist(res,bucket)
#对数正态分布
plt.subplot(627)
plt.xlabel("random.lognorvariate")
mu=1
sigma=0.5
res=[random.lognormvariate(mu,sigma) for _a in xrange(1,size)]
plt.hist(res,bucket)
#正态分布
plt.subplot(628)
plt.xlabel("random.normalvariate")
mu=1
sigma=0.5
res=[random.normalvariate(mu,sigma) for _a in xrange(1,size)]
plt.hist(res,bucket)
#帕累托分布
plt.subplot(629)
plt.xlabel("random.paretovariate")
alpha=1
res=[random.paretovariate(alpha) for _a in xrange(1,size)]
plt.hist(res,bucket)

plt.tight_layout()
plt.show() 

这里写图片描述

数据噪声处理

"""
真实数据的噪声平滑处理
"""
#method one 对窗口(样本)求平均,然后仅仅绘制出给定窗口的平均值,而不是所有数据点
from pylab import *
from numpy import *
def moving_average(interval, window_size):
    window = ones(int(window_size)) / float(window_size)
    return convolve(interval, window, 'same')
t = linspace(-4, 4, 100)
y = sin(t) + rand(len(t)) * 0.1
plot(t, y, 'k.')
y_av = moving_average(y, 10)
plot(t, y_av, 'r')
xlabel('time')
ylabel('value')
grid(True)
show()

#method two 中值滤波,逐项便利信号,并利用相邻项的中值代替当前项
import numpy as np
import pylab as p
import scipy.signal as s
#get some liner data
x = np.linspace(0, 1, 101)
#add some noise signal
x[3::10] = 1.5
p.plot(x)
p.plot(s.medfilt(x, 3))
p.plot(s.medfilt(x, 5))
p.legend(['original signal', 'length 3', 'length 5'])
p.show()

这里写图片描述
这里写图片描述

阅读更多
换一批

没有更多推荐了,返回首页