蚊章汇 - Parul Pandey
type: channel
link: https://linuxcn.bwsl.wang/author/1145/
description: Parul Pandey
items: 10 个 Python 图像编辑工具
items: 9 个鲜为人知的 Python 数据科学库

10 个 Python 图像编辑工具
type: item
date: 2019-04-03T19:39:05+08:00
description: 以下提到的这些 Python 工具在编辑图像、操作图像底层数据方面都提供了简单直接的方法。当今的世界充满了数据，而图像数据就是其中很重要的一部分。但只有经过处理和分析，提高图像的质量，从中提取出有效地信息，才能利用到这些图像数据。常见的图像处理操作包括显示图像，基本的图像操作，如裁剪、翻转、旋转；图像的分割、分类、特征提取；图像恢复；以及图像识别等等。Python 作为一种日益风靡的科学编程语言，是这些图像处理操作的最佳选择。同时，在 Python 生态当中也有很多可以免费使用的优秀的图像处理工具。下文将介绍 10 个可以用于图像处理任务的 Python 库，它们在编辑图像、查看图像底层数据方面都提供了简单直接的方法。1、scikit-imagescikit-image 是一个结合 NumPy 数组使用的开源 Python 工具，它实现了可用于研究、教育、工业应用的算法和应用程序。即使是对于刚刚接触 Python 生态圈的新手来说，它也是一个在使用上足够简单的库。同时它的代码质量也很高，因为它是由一个活跃的志愿者社区开发的，并且通过了 同行评审 peer review 。资源scikit-image 的文档非常完善，其中包含了丰富的用例。示例可以通过导入 skimage 使用，大部分的功能都可以在它的子模块中找到。 图像滤波 image filtering ：import matplotlib.pyplot as plt %matplotlib inline from skimage import data,filters image = data.coins() # ... or any other NumPy array! edges = filters.sobel(image) plt.imshow(edges, cmap='gray')使用 match\_template() 方法实现 模板匹配 template matching ：在展示页面可以看到更多相关的例子。2、NumPyNumPy 提供了对数组的支持，是 Python 编程的一个核心库。图像的本质其实也是一个包含像素数据点的标准 NumPy 数组，因此可以通过一些基本的 NumPy 操作（例如切片、 掩膜 mask 、 花式索引 fancy indexing 等），就可以从像素级别对图像进行编辑。通过 NumPy 数组存储的图像也可以被 skimage 加载并使用 matplotlib 显示。资源在 NumPy 的官方文档中提供了完整的代码文档和资源列表。示例使用 NumPy 对图像进行 掩膜 mask 操作：import numpy as np from skimage import data import matplotlib.pyplot as plt %matplotlib inline image = data.camera() type(image) numpy.ndarray #Image is a NumPy array: mask = image < 87 image[mask]=255 plt.imshow(image, cmap='gray')3、SciPy像 NumPy 一样，SciPy 是 Python 的一个核心科学计算模块，也可以用于图像的基本操作和处理。尤其是 SciPy v1.1.0 中的 scipy.ndimage 子模块，它提供了在 n 维 NumPy 数组上的运行的函数。SciPy 目前还提供了 线性和非线性滤波 linear and non-linear filtering 、 二值形态学 binary morphology 、 B 样条插值 B-spline interpolation 、 对象测量 object measurements 等方面的函数。资源在官方文档中可以查阅到 scipy.ndimage 的完整函数列表。示例使用 SciPy 的高斯滤波对图像进行模糊处理：from scipy import misc,ndimage face = misc.face() blurred_face = ndimage.gaussian_filter(face, sigma=3) very_blurred = ndimage.gaussian_filter(face, sigma=5) #Results plt.imshow(<image to be displayed>)4、PIL/PillowPIL (Python Imaging Library) 是一个免费 Python 编程库，它提供了对多种格式图像文件的打开、编辑、保存的支持。但在 2009 年之后 PIL 就停止发布新版本了。幸运的是，还有一个 PIL …

9 个鲜为人知的 Python 数据科学库
type: item
date: 2018-12-09T19:54:58+08:00
description: 除了 pandas、scikit-learn 和 matplotlib，还要学习一些用 Python 进行数据科学的新技巧。Python 是一种令人惊叹的语言。事实上，它是世界上增长最快的编程语言之一。它一次又一次地证明了它在各个行业的开发者和数据科学者中的作用。Python 及其库的整个生态系统使其成为全世界用户的恰当选择，无论是初学者还是高级用户。它成功和受欢迎的原因之一是它的一组强大的库，使它如此动态和快速。在本文中，我们将看到 Python 库中的一些数据科学工具，而不是那些常用的工具，如 pandas、scikit-learn 和 matplotlib。虽然像 pandas、scikit-learn 这样的库是机器学习中最常想到的，但是了解这个领域的其他 Python 库也是非常有帮助的。Wget提取数据，尤其是从网络中提取数据，是数据科学家的重要任务之一。Wget 是一个免费的工具，用于从网络上非交互式下载文件。它支持 HTTP、HTTPS 和 FTP 协议，以及通过 HTTP 代理进行访问。因为它是非交互式的，所以即使用户没有登录，它也可以在后台工作。所以下次你想下载一个网站或者网页上的所有图片，wget 会提供帮助。安装：$ pip install wget例子：import wget url = 'http://www.futurecrew.com/skaven/song_files/mp3/razorback.mp3' filename = wget.download(url) 100% [................................................] 3841532 / 3841532 filename 'razorback.mp3'钟摆对于在 Python 中处理日期时间感到沮丧的人来说， Pendulum 库是很有帮助的。这是一个 Python 包，可以简化日期时间操作。它是 Python 原生类的一个替代品。有关详细信息，请参阅其文档。安装：$ pip install pendulum例子：import pendulum dt_toronto = pendulum.datetime(2012, 1, 1, tz='America/Toronto') dt_vancouver = pendulum.datetime(2012, 1, 1, tz='America/Vancouver') print(dt_vancouver.diff(dt_toronto).in_hours()) 3不平衡学习当每个类别中的样本数几乎相同（即平衡）时，大多数分类算法会工作得最好。但是现实生活中的案例中充满了不平衡的数据集，这可能会影响到机器学习算法的学习和后续预测。幸运的是，imbalanced-learn 库就是为了解决这个问题而创建的。它与 scikit-learn 兼容，并且是 scikit-learn-contrib 项目的一部分。下次遇到不平衡的数据集时，可以尝试一下。安装：pip install -U imbalanced-learn # or conda install -c conda-forge imbalanced-learn例子：有关用法和示例，请参阅其文档 。FlashText在自然语言处理（NLP）任务中清理文本数据通常需要替换句子中的关键词或从句子中提取关键词。通常，这种操作可以用正则表达式来完成，但是如果要搜索的术语数达到数千个，它们可能会变得很麻烦。Python 的 FlashText 模块，基于 FlashText 算法，为这种情况提供了一个合适的替代方案。FlashText 的最佳部分是运行时间与搜索项的数量无关。你可以在其 文档 中读到更多关于它的信息。安装：$ pip install flashtext例子：提取关键词：from flashtext import KeywordProcessor keyword_processor = KeywordProcessor() # keyword_processor.add_keyword(<unclean name>, <standardised name>) keyword_processor.add_keyword('Big Apple', 'New York') keyword_processor.add_keyword('Bay Area') keywords_found = keyword_processor.extract_keywords('I love Big Apple and Bay Area.') keywords_found ['New York', 'Bay Area']…