当前位置:首页 » 编程语言 » pythonravel

pythonravel

发布时间: 2023-07-25 01:43:01

㈠ 图像直方图均衡化

一. 直方图均衡化:

        直方图均衡化是使图像直方图变得平坦的操作。直方图均衡化能够有效地解决图像整体过暗、过亮的问题,增加图像的清晰度。

        具体流程如下所示。其中S是总的像素数,Zmax是像素的最大取值(8位灰度图像为255),h(i)为图像像素取值为 i 及 小于 i 的像素的总数。

二. python实现直方图均衡化操作

import cv2

import numpy as np

import matplotlib.pyplot as plt

# histogram equalization

def hist_equal(img, z_max=255):

        H, W = img.shape

        S = H * W  * 1.

        out = img.()

        sum_h = 0.

        for i in range(1, 255):

                ind = np.where(img == i)

                sum_h += len(img[ind])

                z_prime = z_max / S * sum_h

                out[ind] = z_prime

        out = out.astype(np.uint8)

        return out

# Read image

img = cv2.imread("../head_g_n.jpg",0).astype(np.float)

# histogram normalization

out = hist_equal(img)

# Display histogram

plt.hist(out.ravel(), bins=255, rwidth=0.8, range=(0, 255))

plt.show()

plt.savefig("out_his.png")

# Save result

cv2.imshow("result", out)

cv2.imwrite("out.jpg", out)

cv2.waitKey(0)

cv2.destroyAllWindows()

三. 实验结果:

        可以看到,直方图均衡化后的图像看起来比原来的图像更加清晰。对于图像亮度整体偏暗或者偏亮的图像,我们可以采用直方图均衡化的方法处理图像,使得它们看上去更加清晰。

四. matlab 实现图像直方图均衡化:

        可以参考一篇优秀的博文:         https://blog.csdn.net/Ibelievesunshine/article/details/79961027

五. 参考内容:

         https://www.cnblogs.com/wojianxin/p/12510797.html

         https://blog.csdn.net/Ibelievesunshine/article/details/104922449

㈡ python如何减小维度

ravel():将多维数组拉平(一维)。
flatten():将多维数组拉平,并拷贝一份。
squeeze():除去多维数组中,维数为1的维度,如315降维后3*5。
reshape(-1):多维数组,拉平。
reshape(-1,5):其中-1表示我们不用亲自去指定这一维度的大小,理解为n维。
python学习网,大量的免费python视频教程,欢迎在线学习!

㈢ python数据分析与应用第三章代码3-5的数据哪来的

savetxt

import numpy as np

i2 = np.eye(2)

np.savetxt("eye.txt", i2)

3.4 读入CSV文件

# AAPL,28-01-2011, ,344.17,344.4,333.53,336.1,21144800

c,v=np.loadtxt('data.csv', delimiter=',', usecols=(6,7), unpack=True) #index从0开始

3.6.1 算术平均值

np.mean(c) = np.average(c)

3.6.2 加权平均值

t = np.arange(len(c))

np.average(c, weights=t)

3.8 极值

np.min(c)

np.max(c)

np.ptp(c) 最大值与最小值的差值

3.10 统计分析

np.median(c) 中位数

np.msort(c) 升序排序

np.var(c) 方差

3.12 分析股票收益率

np.diff(c) 可以返回一个由相邻数组元素的差

值构成的数组

returns = np.diff( arr ) / arr[ : -1] #diff返回的数组比收盘价数组少一个元素

np.std(c) 标准差

对数收益率

logreturns = np.diff( np.log(c) ) #应检查输入数组以确保其不含有零和负数

where 可以根据指定的条件返回所有满足条件的数

组元素的索引值。

posretindices = np.where(returns > 0)

np.sqrt(1./252.) 平方根,浮点数

3.14 分析日期数据

# AAPL,28-01-2011, ,344.17,344.4,333.53,336.1,21144800

dates, close=np.loadtxt('data.csv', delimiter=',', usecols=(1,6), converters={1:datestr2num}, unpack=True)

print "Dates =", dates

def datestr2num(s):

return datetime.datetime.strptime(s, "%d-%m-%Y").date().weekday()

# 星期一 0

# 星期二 1

# 星期三 2

# 星期四 3

# 星期五 4

# 星期六 5

# 星期日 6

#output

Dates = [ 4. 0. 1. 2. 3. 4. 0. 1. 2. 3. 4. 0. 1. 2. 3. 4. 1. 2. 4. 0. 1. 2. 3. 4. 0.

1. 2. 3. 4.]

averages = np.zeros(5)

for i in range(5):

indices = np.where(dates == i)

prices = np.take(close, indices) #按数组的元素运算,产生一个数组作为输出。

>>>a = [4, 3, 5, 7, 6, 8]

>>>indices = [0, 1, 4]

>>>np.take(a, indices)

array([4, 3, 6])

np.argmax(c) #返回的是数组中最大元素的索引值

np.argmin(c)

3.16 汇总数据

# AAPL,28-01-2011, ,344.17,344.4,333.53,336.1,21144800

#得到第一个星期一和最后一个星期五

first_monday = np.ravel(np.where(dates == 0))[0]

last_friday = np.ravel(np.where(dates == 4))[-1]

#创建一个数组,用于存储三周内每一天的索引值

weeks_indices = np.arange(first_monday, last_friday + 1)

#按照每个子数组5个元素,用split函数切分数组

weeks_indices = np.split(weeks_indices, 5)

#output

[array([1, 2, 3, 4, 5]), array([ 6, 7, 8, 9, 10]), array([11,12, 13, 14, 15])]

weeksummary = np.apply_along_axis(summarize, 1, weeks_indices,open, high, low, close)

def summarize(a, o, h, l, c): #open, high, low, close

monday_open = o[a[0]]

week_high = np.max( np.take(h, a) )

week_low = np.min( np.take(l, a) )

friday_close = c[a[-1]]

return("APPL", monday_open, week_high, week_low, friday_close)

np.savetxt("weeksummary.csv", weeksummary, delimiter=",", fmt="%s") #指定了文件名、需要保存的数组名、分隔符(在这个例子中为英文标点逗号)以及存储浮点数的格式。

.png

格式字符串以一个百分号开始。接下来是一个可选的标志字符:-表示结果左对齐,0表示左端补0,+表示输出符号(正号+或负号-)。第三部分为可选的输出宽度参数,表示输出的最小位数。第四部分是精度格式符,以”.”开头,后面跟一个表示精度的整数。最后是一个类型指定字符,在例子中指定为字符串类型。

numpy.apply_along_axis(func1d, axis, arr, *args, **kwargs)

>>>def my_func(a):

... """Average first and last element of a 1-D array"""

... return (a[0] + a[-1]) * 0.5

>>>b = np.array([[1,2,3], [4,5,6], [7,8,9]])

>>>np.apply_along_axis(my_func, 0, b) #沿着X轴运动,取列切片

array([ 4., 5., 6.])

>>>np.apply_along_axis(my_func, 1, b) #沿着y轴运动,取行切片

array([ 2., 5., 8.])

>>>b = np.array([[8,1,7], [4,3,9], [5,2,6]])

>>>np.apply_along_axis(sorted, 1, b)

array([[1, 7, 8],

[3, 4, 9],

[2, 5, 6]])

3.20 计算简单移动平均线

(1) 使用ones函数创建一个长度为N的元素均初始化为1的数组,然后对整个数组除以N,即可得到权重。如下所示:

N = int(sys.argv[1])

weights = np.ones(N) / N

print "Weights", weights

在N = 5时,输出结果如下:

Weights [ 0.2 0.2 0.2 0.2 0.2] #权重相等

(2) 使用这些权重值,调用convolve函数:

c = np.loadtxt('data.csv', delimiter=',', usecols=(6,),unpack=True)

sma = np.convolve(weights, c)[N-1:-N+1] #卷积是分析数学中一种重要的运算,定义为一个函数与经过翻转和平移的另一个函数的乘积的积分。

t = np.arange(N - 1, len(c)) #作图

plot(t, c[N-1:], lw=1.0)

plot(t, sma, lw=2.0)

show()

3.22 计算指数移动平均线

指数移动平均线(exponential moving average)。指数移动平均线使用的权重是指数衰减的。对历史上的数据点赋予的权重以指数速度减小,但永远不会到达0。

x = np.arange(5)

print "Exp", np.exp(x)

#output

Exp [ 1. 2.71828183 7.3890561 20.08553692 54.59815003]

Linspace 返回一个元素值在指定的范围内均匀分布的数组。

print "Linspace", np.linspace(-1, 0, 5) #起始值、终止值、可选的元素个数

#output

Linspace [-1. -0.75 -0.5 -0.25 0. ]

(1)权重计算

N = int(sys.argv[1])

weights = np.exp(np.linspace(-1. , 0. , N))

(2)权重归一化处理

weights /= weights.sum()

print "Weights", weights

#output

Weights [ 0.11405072 0.14644403 0.18803785 0.24144538 0.31002201]

(3)计算及作图

c = np.loadtxt('data.csv', delimiter=',', usecols=(6,),unpack=True)

ema = np.convolve(weights, c)[N-1:-N+1]

t = np.arange(N - 1, len(c))

plot(t, c[N-1:], lw=1.0)

plot(t, ema, lw=2.0)

show()

3.26 用线性模型预测价格

(x, resials, rank, s) = np.linalg.lstsq(A, b) #系数向量x、一个残差数组、A的秩以及A的奇异值

print x, resials, rank, s

#计算下一个预测值

print np.dot(b, x)

3.28 绘制趋势线

>>> x = np.arange(6)

>>> x = x.reshape((2, 3))

>>> x

array([[0, 1, 2], [3, 4, 5]])

>>> np.ones_like(x) #用1填充数组

array([[1, 1, 1], [1, 1, 1]])

类似函数

zeros_like

empty_like

zeros

ones

empty

3.30 数组的修剪和压缩

a = np.arange(5)

print "a =", a

print "Clipped", a.clip(1, 2) #将所有比给定最大值还大的元素全部设为给定的最大值,而所有比给定最小值还小的元素全部设为给定的最小值

#output

a = [0 1 2 3 4]

Clipped [1 1 2 2 2]

a = np.arange(4)

print a

print "Compressed", a.compress(a > 2) #返回一个根据给定条件筛选后的数组

#output

[0 1 2 3]

Compressed [3]

b = np.arange(1, 9)

print "b =", b

print "Factorial", b.prod() #输出数组元素阶乘结果

#output

b = [1 2 3 4 5 6 7 8]

Factorial 40320

print "Factorials", b.cumprod()

#output

㈣ python中fig,ax=plt.subplots什么意思

fig,ax=plt.subplots的意思是将plt.subplots()函数的返回值赋值给fig和ax两个变量。

plt.subplots()是一个函数,返回一个包含figure和axes对象的元组,因此,使用fig,ax=plt.subplots()将元组分解为fig和ax两个变量。

通常,我们只用到ax:

fig,ax = plt.subplots(nrows=2, ncols=2)

axes = ax.flatten()

把父图分成2*2个子图,ax.flatten()把子图展开赋值给axes,axes[0]便是第一个子图,axes[1]是第二个。


(4)pythonravel扩展阅读

在matplotlib中,整个图像为一个Figure对象。在Figure对象中可以包含一个或者多个Axes对象。每个Axes(ax)对象都是一个拥有自己坐标系统的绘图区域。所属关系如下:

def subplots(nrows=1, ncols=1, sharex=False, sharey=False, squeeze=True,

subplot_kw=None, gridspec_kw=None, **fig_kw):

参数:

nrows,ncols:子图的行列数。

sharex, sharey:

设置为 True 或者 ‘all’ 时,所有子图共享 x 轴或者 y 轴,

设置为 False or ‘none’ 时,所有子图的 x,y 轴均为独立,

设置为 ‘row’ 时,每一行的子图会共享 x 或者 y 轴,

设置为 ‘col’ 时,每一列的子图会共享 x 或者 y 轴。

返回值

fig:matplotlib.figure.Figure对象

ax:子图对象(matplotlib.axes.Axes)或者是他的数组

㈤ 神经网络,python报错:AttributeError: 'DataFrame' object has no attribute 'ravel'

y_train.values.ravel()
这样试试,因为你的y不是一维向量。
我建议你先看看数据

㈥ 求python多元支持向量机多元回归模型最后预测结果导出代码、测试集与真实值R2以及对比图代码

这是一个多元支持向量机回归的模型,以下是一个参考的实现代码:
import numpy as npimport matplotlib.pyplot as pltfrom sklearn import svmfrom sklearn.metrics import r2_score
# 模拟数据
np.random.seed(0)
X = np.sort(5 * np.random.rand(80, 1), axis=0)
y = np.sin(X).ravel()
y[::5] += 3 * (0.5 - np.random.rand(16))
# 分割数据
train_X = X[:60]
train_y = y[:60]
test_X = X[60:]
test_y = y[60:]
# 模型训练
model = svm.SVR(kernel='rbf', C=1e3, gamma=0.1)
model.fit(train_X, train_y)
# 预测结果
pred_y = model.predict(test_X)# 计算R2r2 = r2_score(test_y, pred_y)
# 对比图
plt.scatter(test_X, test_y, color='darkorange', label='data'指敏)
plt.plot(test_X, pred_y, color='navy', lw=2, label='SVR model')
plt.title('R2={:.2f}'.format(r2))
plt.legend()
plt.show()
上面的代码将数据分为训练数据和测试数据,使用SVR模型对训练唯配枝数据进行训练,然后对测试数据进行预测。计算预测结果与真实值的R2,最后卖逗将结果画出对比图,以评估模型的效果。

㈦ Python 列表List转Numpy的Array:List[[1,2],[3,4]]只具有一个维度,怎么样表达3这个元素

如果你是想把array([[1,2],[3,4]])捋平,变成array([1,2,3,4]),有三种方式:flat属性,flatten方法,ravel方法
如:
>>> import numpy as np
>>> a = np.array([[1,2],[3,4]])
>>> a
array([[1,2],
[3,4]])
>>> b = np.array(a.flat)
>>> b
array([1,2,3,4])
>>> c = a.flatten()
>>> c
array([1,2,3,4])
>>> d = a.ravel()
>>> d
array([1,2,3,4])

热点内容
服务器1u能连接几台电脑 发布:2025-02-07 18:50:02 浏览:152
立人编译 发布:2025-02-07 18:48:32 浏览:763
日产途达四驱的有哪些配置 发布:2025-02-07 18:42:02 浏览:831
服务器搭建镜像站 发布:2025-02-07 18:41:55 浏览:376
游戏上云成标配云服务器该怎么选 发布:2025-02-07 18:26:13 浏览:141
哪个安卓手机自带系统没有广告 发布:2025-02-07 18:22:36 浏览:724
电脑开机后一直在配置更新怎么进入系统 发布:2025-02-07 18:17:43 浏览:12
新浪上传视频在哪 发布:2025-02-07 18:17:38 浏览:558
外汇点差算法 发布:2025-02-07 18:16:41 浏览:81
我的世界各种服务器核心的区别 发布:2025-02-07 18:15:52 浏览:678