27 个Python数据科学库实战案例 (附代码)

为了大家能够对人工智能常用的 Python 库有一个初步的了解,以选择能够满足自己需求的库进行学习,对目前较为常见的人工智能库进行简要全面的介绍。

**1、Numpy
**

NumPy(Numerical Python)是 Python的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库,Numpy底层使用C语言编写,数组中直接存储对象,而不是存储对象指针,所以其运算效率远高于纯Python代码。我们可以在示例中对比下纯Python与使用Numpy库在计算列表sin值的速度对比:

import numpy as np``import math``import random``import time``   ``start = time.time()``for i in range(10):`    `list_1 = list(range(1,10000))`    `for j in range(len(list_1)):`        `list_1[j] = math.sin(list_1[j])``print("使用纯Python用时{}s".format(time.time()-start))``   ``start = time.time()``for i in range(10):`    `list_1 = np.array(np.arange(1,10000))`    `list_1 = np.sin(list_1)``print("使用Numpy用时{}s".format(time.time()-start))

从如下运行结果,可以看到使用 Numpy 库的速度快于纯 Python 编写的代码:

使用纯Python用时0.017444372177124023s
使用Numpy用时0.001619577407836914s

**2、OpenCV
**

OpenCV 是一个的跨平台计算机视觉库,可以运行在 Linux、Windows 和 Mac OS 操作系统上。它轻量级而且高效——由一系列 C 函数和少量 C++ 类构成,同时也提供了 Python 接口,实现了图像处理和计算机视觉方面的很多通用算法。下面代码尝试使用一些简单的滤镜,包括图片的平滑处理、高斯模糊等:

import numpy as np``import cv2 as cv``from matplotlib import pyplot as plt``img = cv.imread('h89817032p0.png')``kernel = np.ones((5,5),np.float32)/25``dst = cv.filter2D(img,-1,kernel)``blur_1 = cv.GaussianBlur(img,(5,5),0)``blur_2 = cv.bilateralFilter(img,9,75,75)``plt.figure(figsize=(10,10))``plt.subplot(221),plt.imshow(img[:,:,::-1]),plt.title('Original')``plt.xticks([]), plt.yticks([])``plt.subplot(222),plt.imshow(dst[:,:,::-1]),plt.title('Averaging')``plt.xticks([]), plt.yticks([])``plt.subplot(223),plt.imshow(blur_1[:,:,::-1]),plt.title('Gaussian')``plt.xticks([]), plt.yticks([])``plt.subplot(224),plt.imshow(blur_1[:,:,::-1]),plt.title('Bilateral')``plt.xticks([]), plt.yticks([])``plt.show()

OpenCV

**3、Scikit-image
**

scikit-image是基于scipy的图像处理库,它将图片作为numpy数组进行处理。例如,可以利用scikit-image改变图片比例,scikit-image提供了rescale、resize以及downscale_local_mean等函数。

from skimage import data, color, io``from skimage.transform import rescale, resize, downscale_local_mean``   ``image = color.rgb2gray(io.imread('h89817032p0.png'))``   ``image_rescaled = rescale(image, 0.25, anti_aliasing=False)``image_resized = resize(image, (image.shape[0] // 4, image.shape[1] // 4),`                       `anti_aliasing=True)``image_downscaled = downscale_local_mean(image, (4, 3))``plt.figure(figsize=(20,20))``plt.subplot(221),plt.imshow(image, cmap='gray'),plt.title('Original')``plt.xticks([]), plt.yticks([])``plt.subplot(222),plt.imshow(image_rescaled, cmap='gray'),plt.title('Rescaled')``plt.xticks([]), plt.yticks([])``plt.subplot(223),plt.imshow(image_resized, cmap='gray'),plt.title('Resized')``plt.xticks([]), plt.yticks([])``plt.subplot(224),plt.imshow(image_downscaled, cmap='gray'),plt.title('Downscaled')``plt.xticks([]), plt.yticks([])``plt.show()

Scikit-image

**4、PIL
**

Python Imaging Library(PIL) 已经成为 Python 事实上的图像处理标准库了,这是由于,PIL 功能非常强大,但API却非常简单易用。但是由于PIL仅支持到 Python 2.7,再加上年久失修,于是一群志愿者在 PIL 的基础上创建了兼容的版本,名字叫 Pillow,支持最新 Python 3.x,又加入了许多新特性,因此,我们可以跳过 PIL,直接安装使用 Pillow。

**5、Pillow
**

使用 Pillow 生成字母验证码图片:

from PIL import Image, ImageDraw, ImageFont, ImageFilter``   ``import random``   ``# 随机字母:``def rndChar():`    `return chr(random.randint(65, 90))``   ``# 随机颜色1:``def rndColor():`    `return (random.randint(64, 255), random.randint(64, 255), random.randint(64, 255))``   ``# 随机颜色2:``def rndColor2():`    `return (random.randint(32, 127), random.randint(32, 127), random.randint(32, 127))``   ``# 240 x 60:``width = 60 * 6``height = 60 * 6``image = Image.new('RGB', (width, height), (255, 255, 255))``# 创建Font对象:``font = ImageFont.truetype('/usr/share/fonts/wps-office/simhei.ttf', 60)``# 创建Draw对象:``draw = ImageDraw.Draw(image)``# 填充每个像素:``for x in range(width):`    `for y in range(height):`        `draw.point((x, y), fill=rndColor())``# 输出文字:``for t in range(6):`    `draw.text((60 * t + 10, 150), rndChar(), font=font, fill=rndColor2())``# 模糊:``image = image.filter(ImageFilter.BLUR)``image.save('code.jpg', 'jpeg')

验证码

**6、SimpleCV
**

SimpleCV 是一个用于构建计算机视觉应用程序的开源框架。使用它,可以访问高性能的计算机视觉库,如 OpenCV,而不必首先了解位深度、文件格式、颜色空间、缓冲区管理、特征值或矩阵等术语。但其对于 Python3 的支持很差很差,在 Python3.7 中使用如下代码:

from SimpleCV import Image, Color, Display``# load an image from imgur``img = Image('http://i.imgur.com/lfAeZ4n.png')``# use a keypoint detector to find areas of interest``feats = img.findKeypoints()``# draw the list of keypoints``feats.draw(color=Color.RED)``# show the  resulting image.` `img.show()``# apply the stuff we found to the image.``output = img.applyLayers()``# save the results.``output.save('juniperfeats.png')

会报如下错

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值