你好,你是要问jupyter的group_by咋用吗?jupyter的group_by的用法是:jupyter的group_by是将查询结果按某一列或多列的值分组的,值相等的为一组,所以你想分出结果的哪组都行,只要是你查询的是从jupyter的group_by所分出来的分组结果中进行筛选进行。
以下提到的这些 Python 工具在编辑图像、操作图像底层数据方面都提供了简单直接的方法。
-- Parul Pandey
当今的世界充满了数据,而图像数据就是其中很重要的一部分。但只有经过处理和分析,提高图像的质量,从中提取出有效地信息,才能利用到这些图像数据。
常见的图像处理操作包括显示图像,基本的图像操作,如裁剪、翻转、旋转;图像的分割、分类、特征提取;图像恢复;以及图像识别等等。Python 作为一种日益风靡的科学编程语言,是这些图像处理操作的最佳选择。同时,在 Python 生态当中也有很多可以免费使用的优秀的图像处理工具。
下文将介绍 10 个可以用于图像处理任务的 Python 库,它们在编辑图像、查看图像底层数据方面都提供了简单直接的方法。
scikit-image 是一个结合 NumPy 数组使用的开源 Python 工具,它实现了可用于研究、教育、工业应用的算法和应用程序。即使是对于刚刚接触 Python 生态圈的新手来说,它也是一个在使用上足够简单的库。同时它的代码质量也很高,因为它是由一个活跃的志愿者社区开发的,并且通过了 同行评审(peer review)。
scikit-image 的 文档 非常完善,其中包含了丰富的用例。
可以通过导入 skimage 使用,大部分的功能都可以在它的子模块中找到。
图像滤波(image filtering):
使用 match_template() 方法实现 模板匹配(template matching):
在 展示页面 可以看到更多相关的例子。
NumPy 提供了对数组的支持,是 Python 编程的一个核心库。图像的本质其实也是一个包含像素数据点的标准 NumPy 数组,因此可以通过一些基本的 NumPy 操作(例如切片、 掩膜(mask)、 花式索引(fancy indexing)等),就可以从像素级别对图像进行编辑。通过 NumPy 数组存储的图像也可以被 skimage 加载并使用 matplotlib 显示。
在 NumPy 的 官方文档 中提供了完整的代码文档和资源列表。
使用 NumPy 对图像进行 掩膜(mask)操作:
像 NumPy 一样, SciPy 是 Python 的一个核心科学计算模块,也可以用于图像的基本操作和处理。尤其是 SciPy v110 中的 scipyndimage 子模块,它提供了在 n 维 NumPy 数组上的运行的函数。SciPy 目前还提供了 线性和非线性滤波(linear and non-linear filtering)、 二值形态学(binary morphology)、 B 样条插值(B-spline interpolation)、 对象测量(object measurements)等方面的函数。
在 官方文档 中可以查阅到 scipyndimage 的完整函数列表。
使用 SciPy 的 高斯滤波 对图像进行模糊处理:
PIL (Python Imaging Library) 是一个免费 Python 编程库,它提供了对多种格式图像文件的打开、编辑、保存的支持。但在 2009 年之后 PIL 就停止发布新版本了。幸运的是,还有一个 PIL 的积极开发的分支 Pillow ,它的安装过程比 PIL 更加简单,支持大部分主流的操作系统,并且还支持 Python 3。Pillow 包含了图像的基础处理功能,包括像素点操作、使用内置卷积内核进行滤波、颜色空间转换等等。
Pillow 的 官方文档 提供了 Pillow 的安装说明自己代码库中每一个模块的示例。
使用 Pillow 中的 ImageFilter 模块实现图像增强:
OpenCV(Open Source Computer Vision 库)是计算机视觉领域最广泛使用的库之一, OpenCV-Python 则是 OpenCV 的 Python API。OpenCV-Python 的运行速度很快,这归功于它使用 C/C++ 编写的后台代码,同时由于它使用了 Python 进行封装,因此调用和部署的难度也不大。这些优点让 OpenCV-Python 成为了计算密集型计算机视觉应用程序的一个不错的选择。
入门之前最好先阅读 OpenCV2-Python-Guide 这份文档。
使用 OpenCV-Python 中的 金字塔融合(Pyramid Blending)将苹果和橘子融合到一起:
SimpleCV 是一个开源的计算机视觉框架。它支持包括 OpenCV 在内的一些高性能计算机视觉库,同时不需要去了解 位深度(bit depth)、文件格式、 色彩空间(color space)之类的概念,因此 SimpleCV 的学习曲线要比 OpenCV 平缓得多,正如它的口号所说,“将计算机视觉变得更简单”。SimpleCV 的优点还有:
官方文档 简单易懂,同时也附有大量的学习用例。
文档 包含了安装介绍、示例以及一些 Mahotas 的入门教程。
Mahotas 力求使用少量的代码来实现功能。例如这个 Finding Wally 游戏 :
ITK (Insight Segmentation and Registration Toolkit)是一个为开发者提供普适性图像分析功能的开源、跨平台工具套件, SimpleITK 则是基于 ITK 构建出来的一个简化层,旨在促进 ITK 在快速原型设计、教育、解释语言中的应用。SimpleITK 作为一个图像分析工具包,它也带有 大量的组件 ,可以支持常规的滤波、图像分割、 图像配准(registration)功能。尽管 SimpleITK 使用 C++ 编写,但它也支持包括 Python 在内的大部分编程语言。
有很多 Jupyter Notebooks 用例可以展示 SimpleITK 在教育和科研领域中的应用,通过这些用例可以看到如何使用 Python 和 R 利用 SimpleITK 来实现交互式图像分析。
使用 Python + SimpleITK 实现的 CT/MR 图像配准过程:
pgmagick 是使用 Python 封装的 GraphicsMagick 库。 GraphicsMagick 通常被认为是图像处理界的瑞士军刀,因为它强大而又高效的工具包支持对多达 88 种主流格式图像文件的读写操作,包括 DPX、GIF、JPEG、JPEG-2000、PNG、PDF、PNM、TIFF 等等。
pgmagick 的 GitHub 仓库 中有相关的安装说明、依赖列表,以及详细的 使用指引 。
图像缩放:
边缘提取:
Cairo 是一个用于绘制矢量图的二维图形库,而 Pycairo 是用于 Cairo 的一组 Python 绑定。矢量图的优点在于做大小缩放的过程中不会丢失图像的清晰度。使用 Pycairo 可以在 Python 中调用 Cairo 的相关命令。
Pycairo 的 GitHub 仓库 提供了关于安装和使用的详细说明,以及一份简要介绍 Pycairo 的 入门指南 。
使用 Pycairo 绘制线段、基本图形、 径向渐变(radial gradients):
以上就是 Python 中的一些有用的图像处理库,无论你有没有听说过、有没有使用过,都值得试用一下并了解它们。
via: https://opensourcecom/article/19/3/python-image-manipulation-tools
作者: Parul Pandey 选题: lujun9972 译者: HankChow 校对: wxy
国内知名的使用Python编程公司是豆瓣和知乎,头条早期也是使用Python编程。而国外的知名公司有Youtube, Quora, Dropbox和Google等。
当我们刷知乎刷豆瓣时,当我们使用这些公司的服务时,背后就有Python代码默默地为我们工作。
简介
去年(2019)我们人类首次见到了黑洞的照片,掌声背后Python也功不可没。天文学家使用Python处理望远镜收集的数据,除了用到Astropy这个天文学相关的库之外,还使用了Numpy, Scipy, Pandas进行数据处理,用Matplotlib画图等等,而且也用到了Jupyter Notbook这款非常赞的工具。
时间进入2000年,Web开始流行,Python也进入Web开发领域。Python知名的Web框架有Django, Tornado, Flask,知乎就使用了Tornado。同时,搜索引擎和爬虫的火热,其间也少不了Python的身影,scrapy, selenium, pyspider等爬虫工具就是Python开发的(selenium比较特殊一点,略)。对爬到的html页面进行处理,在Python中有lxml, beautiful soup, pyquery等库帮我们处理。
启动最基本的jupyter notebook镜像:
使用基础镜像 jupyter/datascience-notebook ,因为它预装了常用的模块:pandas, matplotlib, scipy, seaborn, scikit-learn, scikit-image, sympy, cython, patsy, statsmodel, cloudpickle, dill, numba, bokeh;
dockerrun-it--rm -p 8888:8888 jupyter/datascience-notebook:281505737f8a
1
其中
docker run是使用一个镜像生成一个运行的容器;
-it指交互模式,启动后终端在运行着的容器里面,与之对应的有-d后端运行模式,启动后终端交互在实体机,要想进入容器需要使用命令docker exec -it container-name bash docker exec -it container-name意为交互模式进入正在运行的一个容器,bash意为进入容器后使用的命令,这里用的是bash,这样进入容器后就能执行shell;
--rm意为退出shell的时候自动删除容器,常在测试的时候使用,这样不用每次修改去删除已有的容器;
-p 8888:8888指的是端口映射,前面的是实体机的端口,后面是容器里面暴露出的端口,两边端口可以不一样,这样同一个镜像可以启动多个对应不同端口的服务;
jupyter/datascience-notebook:281505737f8a是镜像名字,冒号后面的是tag,类似于版本的概念,如果不显式的给出tag每次都回从hub上拉取latest的镜像,如果网络环境不好的话比较费时间,推荐显式给出tag,这样每次构建都会使用已有的镜像。
启动后就可以在终端看到:
[I 04:01:05691 NotebookApp] Running the core application with no additional extensions or settings
[I 04:01:05692 NotebookApp] Serving notebooks from local directory: /home/jovyan
[I 04:01:05692 NotebookApp] 0 active kernels
[I 04:01:05692 NotebookApp] The Jupyter Notebook is running at:
[I 04:01:05692 NotebookApp] http://[all ip addresses on your system]:8888/token=0a3331628e0e35f94eb0ad543faeb3e396fbccfa3ff06e5a
[I 04:01:05692 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation)
[C 04:01:05692 NotebookApp]
Copy/paste this URL into your browser when you connect for the first time,
to login with a token:
http://localhost:8888/token=0a3331628e0e35f94eb0ad543faeb3e396fbccfa3ff06e5a
此时是停在容器里面,打开浏览器 访问http://localhost:8888/token=0a3331628e0e35f94eb0ad543faeb3e396fbccfa3ff06e5a 即可打开基本的jupyter notebook 环境,后面的token是随机生成的;
启动带权限的容器
生成自定义token
# Python脚本生成密码i
# Python脚本生成密码
import IPython
IPythonlibpasswd()
输入密码生成token
test的token:sha1:6587feaef3b1:6b243404e4cfaafe611fdf494ee71fdaa8c4a563
自定义token运行容器:
docker run -d -p 8888:8888 jupyter/datascience-notebook start-notebooksh --NotebookApppassword='sha1:6587feaef3b1:6b243404e4cfaafe611fdf494ee71fdaa8c4a563'
这时访问http://localhost:8888/会出现输入密码的页面,输入正确的密码才能进入jupyter。
共享目录
-v参数
docker提供-v参数使实体机和容器共享目录,这对于有状态的服务很有用,目录挂载添加参数:
-v /home/jason/jason/docker/notebook:/home/jovyan/work
运行带有目录共享的容器
docker run-it--rm-p8888:8888-v/home/jason/jason/docker/notebook:/home/jovyan/work jupyter/datascience-notebookstart-notebooksh--NotebookApppassword='sha1:6587feaef3b1:6b243404e4cfaafe611fdf494ee71fdaa8c4a563'
这样在jupyter里新建的notebook都会出现在实体机指定的目录里。由于这个镜像的原因 需在work目录下新建才能在实体机看到。
基于jupyter/datascience-notebook 生成pytorch image
Dockerfile
因为没有合适的pytorch镜像,自己编辑Dockerfile:
新建文件Dockerfile并编辑内容:
FROM jupyter/datascience-notebook:281505737f8a
MAINTAINER JasonW "jianchengss@163com"
# 下面是按官网的方法安装spotlight
#RUN pip --no-cache-dir install --upgrade install http://downloadpytorchorg/whl/cu75/torch-020post3-cp36-cp36m-manylinux1_x86_64whl
#RUN pip --no-cache-dir install --upgrade torchvision
# pytorch
RUN conda install pytorch torchvision -c soumith
# spotlight(https://githubcom/maciejkula/spotlight)
RUN conda install -c maciejkula -c soumith spotlight=012
build
在Dockerfile目录里运行命令:docker build -t jianchengss/datascience-pytorch:01
这样就生成了image:jianchengss/datascience-pytorch:01可以运行docker images查看本机上所有的image。
从构建的镜像运行容器
docker run-it--rm-p8888:8888-v~/workspace/python/notebooks-pytorch:/home/jovyan/work--privileged=truejianchengss/datascience-pytorch:01start-notebooksh--NotebookApppassword='sha1:6587feaef3b1:6b243404e4cfaafe611fdf494ee71fdaa8c4a563'
最终容器
经过以上步骤,测试完成后既可以执行最终运行的命令 注意 token换成自己的
docker run-d-p8588:8888-v~/workspace/python/notebooks-pytorch:/home/jovyan/work--privileged=true--name=pytorch jianchengss/datascience-pytorch:01start-notebooksh--NotebookApppassword='sha1:7aee2f913c8e:17d40f203cbd5c9820f302894a92724c3de9fba6'
-it --rm 换成了 -d,比之前多的参数有:
--name=pytorch,意为给container取一个名字,好区分和管理,缺省的话名字为一串随机的字符串。
--privileged=true出现文件夹访问权限的时候添加该属性
此时运行docker ps即可查看运行着的容器:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
3bd3e30e9ab3 jianchengss/datascience-pytorch:01 "tini -- start-notebo" 4 seconds ago Up 3 seconds 0000:8588->8888/tcp pytorch
进入容器操作
容器启动后有时候需要进入容器操作,比方说查看信息或者安装新的软件,此时执行docker exec -it pytorch bash
其他命令
docker stop container-name # 停止运行着的容器
docker rm container-name # 删除已有的容器,要先停止
docker rmi image-name # 删除已有的镜像
欢迎分享,转载请注明来源:表白网
评论列表(0条)