jupyter的group_by咋用

jupyter的group_by咋用,第1张

你好,你是要问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 # 删除已有的镜像

欢迎分享,转载请注明来源:表白网

原文地址:https://h5.hunlipic.com/biaobai/4116788.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2024-04-17
下一篇2024-04-17

发表评论

登录后才能评论

评论列表(0条)

    保存