该脚本非常适用于平滑1D功能,并且它们还为两个轴上的2D平滑提供代码(即模糊图像).

但是,我想将此函数应用于2D数据集,但仅沿一个轴(x方向).我可以循环执行此操作,方法是检查y中的每个切片,应用1D卷积,然后重建阵列.但这似乎是糟糕的编码技术.

因此,我想知道如何在2D中做到这一点?我想我需要制作一个2D内核,权重只沿一个方向变化,但我不知道该怎么做,或者使用哪个卷积函数(numpy.convolve,scipy.signal.convolve,scipy.ndimage.filters .convolve1d等)

解决方法:

也许最简单的选择是使用scipy.ndimage.filters中的一个1D过滤器:

from scipy import ndimage

from scipy.misc import lena

img = lena()

# a uniform (boxcar) filter with a width of 50

boxcar = ndimage.uniform_filter1d(img, 50, 1)

# a Gaussian filter with a standard deviation of 10

gauss = ndimage.gaussian_filter1d(img, 10, 1)

你也可以使用这样的过滤器的非1D版本:ndimage.gaussian_filter(img,(0,10))(即,对于你不想平滑的轴,将过滤器宽度设置为0).

import numpy as np

kern = np.hanning(50) # a Hanning window with width 50

kern /= kern.sum() # normalize the kernel weights to sum to 1

hanning = ndimage.convolve1d(img, kern, 1)

以下是各种输出的外观:

from matplotlib import pyplot as plt

fig, ax = plt.subplots(2, 2, figsize=(8, 8))

ax[0, 0].imshow(img)

ax[0, 0].set_title('Original')

ax[0, 1].imshow(boxcar)

ax[0, 1].set_title('Boxcar filter (width = 50)')

ax[1, 0].imshow(gauss)

ax[1, 0].set_title(r'Gaussian filter ($\sigma$= 10)')

ax[1, 1].imshow(hanning)

ax[1, 1].set_title(r'Hanning window (width = 50)')

for aa in ax.flat:

aa.set_axis_off()

fig.tight_layout()

plt.show()

标签:smoothing,convolution,python,numpy,scipy

来源: https://codeday.me/bug/20190727/1557872.html

python ndimage.gaussian_filter_python – 仅沿一个轴平滑2D数组相关推荐

  1. python题目,已有一个排序好的数组,先输入一个数字,按原来的顺序将它插入到数组中

    # 从大到小, 从小到大把小于号改成大于号就行 a = [15, 12, 10] b = list(a) print('原来的数组:' ) print(b) # print(b) # print(le ...

  2. python中2d_【IT专家】如何在Python中复制一个2D数组?(复制)

    本文由我司收集整编,推荐下载,如有疑问,请与我司联系 如何在 Python 中复制一个 2D 数组? ( 复制 ) 如何在 Python 中复制一个 2D 数组 ?( 复制 )[ 英 ]How to  ...

  3. python实现支持向量机实例_一个简单的案例带你了解支持向量机算法(Python代码)...

    介绍 掌握机器学习算法并不是一个不可能完成的事情.大多数的初学者都是从学习回归开始的.是因为回归易于学习和使用,但这能够解决我们全部的问题吗?当然不行!因为,你要学习的机器学习算法不仅仅只有回归! 把 ...

  4. python使用del保留字定义一个函数-Python使用什么保留字定义一个函数。

    [单选题]Where was the First Continental Congress held? [单选题]对于集合S和T,下列不属于集合类型的操作是() [判断题]UPS系统的静态开关用于保护 ...

  5. python使用del保留字定义一个函数-函数和代码复用 --Python

    1.关于递归函数的描述,以下选项中正确的是 A.包含一个循环结构 B.函数比较复杂 C.函数内部包含对本函数的再次调用 D.函数名称作为返回值 答案:D 答案解析:递归函数是指函数内部包含对本函数的再 ...

  6. python画图y轴在右侧_解决python中画图时x,y轴名称出现中文乱码的问题

    如下所示: #-*- coding:utf-8 -*- import numpy as np import matplotlib.pyplot as plt from matplotlib.font_ ...

  7. pip install pygame_使用 Python 和 Pygame 模块构建一个游戏框架!

    这系列的第一篇通过创建一个简单的骰子游戏来探究 Python.现在是来从零制作你自己的游戏的时间. 在我的这系列的第一篇文章 中, 我已经讲解如何使用 Python 创建一个简单的.基于文本的骰子游戏 ...

  8. python如何读取excel的一个sheet_python pandas是如何读取excel表中的sheet的(四)

    上一期中,我们重点介绍了pandas中read_excel()中的index_col参数,本期介绍一下usecols参数.官方文档说明:(支持int,str,以及他们的列表,还支持函数调用,默认Non ...

  9. ListView自定义视图中对Button按钮实现仅允许一个按钮处于开启状态

    2019独角兽企业重金招聘Python工程师标准>>> Android项目迭代,之前使用下拉框Spinner被替换成ListView,相应的实现也比之前更加复杂了,根据美工给出的界面 ...

最新文章

  1. ovirt官方安装文档 第八章
  2. 图说开源许可协议:GPL、BSD、MIT、Mozilla、Apache和LGPL的区别
  3. MongoDB shell 操作
  4. 第三次作业(词频统计及其效能分析)
  5. TIOBE 6月排行:C# 以微弱的优势超过了 Visual Basic .NET 的排名,再次进入 TOP 5
  6. 字符串string和内存流MemoryStream及比特数组byte[]互转
  7. 我和面试官之间关于操作系统的一场对弈 | 原力计划
  8. 计算机三级之嵌入式系统学习笔记7
  9. 程序员如何抓住工业互联网风口实现逆袭?
  10. python 公司教程_最全Python快速入门教程,满满都是干货
  11. 直连路由、主机路由以及选择顺序
  12. IDEA连接数据库后在数据表里添加外键的两种方式
  13. LOJ3049 [十二省联考2019] 字符串问题 【后缀自动机】【倍增】【拓扑排序】
  14. C++ QT 下载地址
  15. 【Python基础】第八篇 | 容器之列表的使用
  16. Location虚拟定位
  17. 数据安全与隐私保护要点整理
  18. CTF-练习平台-Misc之 MISC图穷匕见
  19. 布局“grid”详解介绍大全
  20. 邮箱被盗,受到网络钓鱼攻击,如何甄别规避?

热门文章

  1. C++著名类库和C++标准库介绍
  2. 弱电施工流程及规范(三)
  3. python像数常用函数_10个好用的Python集成开发环境【大牛经验】
  4. 新版芒果tv电脑版 v6.3.9官方版
  5. 计算机教师资格证怎么报名时间,教师资格证考试必须在电脑上报名吗?
  6. Python开发redmine的缺陷统计图表
  7. 自动化测试之获取mysql中的数据
  8. 深入理解计算机系统之浮点数
  9. 利用语义分割(FCN)区分两种有文字和无文字区域
  10. 相关系数r的matlab实现,Spearmen相关系数和Pearson相关系数及其MATLAB实现