Python编程深度学习计算库之numpy

NumPy是python下的计算库,被非常广泛地应用,尤其是近来的深度学习的推广。在这篇文章中,将会介绍使用numpy进行一些最为基础的计算。

NumPy vs SciPy

NumPy和SciPy都可以进行运算,主要区别如下

最近比较热门的深度学习,比如在神经网络的算法,多维数组的使用是一个极为重要的场景。如果你熟悉tensorflow中的tensor的概念,你会非常清晰numpy的作用。所以熟悉Numpy可以说是使用python进行深度学习入门的一个基础知识。

安装

liumiaocn:tmp liumiao$ pip install numpy
Collecting numpy
 Downloading https://files.pythonhosted.org/packages/b6/5e/4b2c794fb57a42e285d6e0fae0e9163773c5a6a6a7e1794967fc5d2168f2/numpy-1.14.5-cp27-cp27m-macosx_10_6_intel.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl (4.7MB)
  100% |████████████████████████████████| 4.7MB 284kB/s
Installing collected packages: numpy
Successfully installed numpy-1.14.5
liumiaocn:tmp liumiao$

确认

liumiaocn:tmp liumiao$ pip show numpy
Name: numpy
Version: 1.14.5
Summary: NumPy: array processing for numbers, strings, records, and objects.
Home-page: http://www.numpy.org
Author: Travis E. Oliphant et al.
Author-email: None
License: BSD
Location: /usr/local/lib/python2.7/site-packages
Requires:
Required-by:
liumiaocn:tmp liumiao$

使用

使用numpy的数组

使用如下例子简单来理解一下numpy的数组的使用:

liumiaocn:tmp liumiao$ cat np-1.py
#!/usr/local/bin/python
import numpy as np
arr = [1,2,3,4]
print("array arr: ", arr)
np_arr = np.array(arr)
print("numpy array: ", np_arr)
print("doulbe calc : ", 2 * np_arr)
print("ndim: ", np_arr.ndim)
liumiaocn:tmp liumiao$ python np-1.py
('array arr: ', [1, 2, 3, 4])
('numpy array: ', array([1, 2, 3, 4]))
('doulbe calc : ', array([2, 4, 6, 8]))
('ndim: ', 1)
liumiaocn:tmp liumiao$

多维数组&ndim/shape

ndim在numpy中指的是数组的维度,如果是2维值则为2,在下面的例子中构造一个步进为2的等差数列,然后将其进行维度的转换同时输出数组的ndim和shape的值以辅助对于ndim和shape含义的理解。

liumiaocn:tmp liumiao$ cat np-2.py
#!/usr/local/bin/python
import numpy as np
arithmetic = np.arange(0,16,2)
print(arithmetic)
print("ndim: ",arithmetic.ndim," shape:", arithmetic.shape)
#resize to 2*4 2-dim array
arithmetic.resize(2,4)
print(arithmetic)
print("ndim: ",arithmetic.ndim," shape:", arithmetic.shape)
#resize to 2*2*2 3-dim array
array = arithmetic.resize(2,2,2)
print(arithmetic)
print("ndim: ",arithmetic.ndim," shape:", arithmetic.shape)
liumiaocn:tmp liumiao$ python np-2.py
[ 0 2 4 6 8 10 12 14]
('ndim: ', 1, ' shape:', (8,))
[[ 0 2 4 6]
 [ 8 10 12 14]]
('ndim: ', 2, ' shape:', (2, 4))
[[[ 0 2]
 [ 4 6]]
 [[ 8 10]
 [12 14]]]
('ndim: ', 3, ' shape:', (2, 2, 2))
liumiaocn:tmp liumiao$ 

另外也可以使用reshape进行维度的调整。

等差数列&等比数列

numpy和matlab写起来有很多函数基本一样,比如等比数列和等差数列可以使用linspace和logspace进行。

logspace缺省的时候指的是以10给底,但是可以通过指定base进行设定

liumiaocn:tmp liumiao$ cat np-3.py
#!/usr/local/bin/python
import numpy as np
print("np.linspace(1,4,4):", np.linspace(1,4,4))
print("np.logspace(1,4,4):", np.logspace(1,4,4))
print("np.logspace(1,4,4,base=2):",np.logspace(1,4,4,base=2))
liumiaocn:tmp liumiao$ python np-3.py
('np.linspace(1,4,4):', array([1., 2., 3., 4.]))
('np.logspace(1,4,4):', array([  10.,  100., 1000., 10000.]))
('np.logspace(1,4,4,base=2):', array([ 2., 4., 8., 16.]))
liumiaocn:tmp liumiao$

数组初始化

numpy提供了很方便的初始化的函数,比如

liumiaocn:tmp liumiao$ cat np-4.py
#!/usr/local/bin/python
import numpy as np
print("np.zeros(6):",np.zeros(6))
print("np.zeros((2,3)):",np.zeros((2,3)))
print("np.ones(6):",np.ones(6))
print("np.ones((2,3)):",np.ones((2,3)))
print("np.random.random(6):",np.random.random(6))
print("np.random.random(6):",np.random.random(6))
print("np.random.random((2,3)):",np.random.random((2,3)))
print("np.random.seed(1234)")
np.random.seed(1234)
print("np.random.random(6):",np.random.random(6))
print("np.random.seed(1234)")
np.random.seed(1234)
print("np.random.random(6):",np.random.random(6))
liumiaocn:tmp liumiao$ python np-4.py
('np.zeros(6):', array([0., 0., 0., 0., 0., 0.]))
('np.zeros((2,3)):', array([[0., 0., 0.],
    [0., 0., 0.]]))
('np.ones(6):', array([1., 1., 1., 1., 1., 1.]))
('np.ones((2,3)):', array([[1., 1., 1.],
    [1., 1., 1.]]))
('np.random.random(6):', array([0.06909968, 0.27468844, 0.59127996, 0.56973602, 0.45985047,
    0.95384945]))
('np.random.random(6):', array([0.62996648, 0.2824114 , 0.2698051 , 0.09262053, 0.50862503,
    0.96600255]))
('np.random.random((2,3)):', array([[0.66880129, 0.8834006 , 0.49458989],
    [0.28335563, 0.65711274, 0.76726504]]))
np.random.seed(1234)
('np.random.random(6):', array([0.19151945, 0.62210877, 0.43772774, 0.78535858, 0.77997581,
    0.27259261]))
np.random.seed(1234)
('np.random.random(6):', array([0.19151945, 0.62210877, 0.43772774, 0.78535858, 0.77997581,
    0.27259261]))
liumiaocn:tmp liumiao$

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对我们的支持。如果你想了解更多相关内容请查看下面相关链接

(0)

相关推荐

  • python 3.7.0 下pillow安装方法

    PIL(Python Imaging Library)是Python中一个强大的图像处理库,但目前其只支持到Python2.7 pillow是PIL的一个分支,虽是分支但是其与PIL同样也具有很强的图像处理库. Python3.7.0 如何安装pillow 此安装方法在windows7环境下完成: >>>win+r调出运行窗口,键入cmd弹出命令窗口 >>>此处需要键入命令调到python所在的文件夹中,如图,我是将python安装在d盘中 >>>在D

  • python3 pillow生成简单验证码图片的示例

    使用Python的pillow模块 random 模块随机生成验证码图片,并应用到Django项目中 安装pillow $ pip3 install pillow 生成验证码图片 \vericode.py from PIL import Image,ImageDraw,ImageFont,ImageFilter import random #随机码 默认长度=1 def random_code(lenght=1): code = '' for char in range(lenght): cod

  • Python实现更改图片尺寸大小的方法(基于Pillow包)

    本文实例讲述了Python实现更改图片尺寸大小的方法.分享给大家供大家参考,具体如下: 1.PIL包推荐Pillow. 2.源码: #encoding=utf-8 #author: walker #date: 2014-05-15 #function: 更改图片尺寸大小 import os import os.path from PIL import Image ''' filein: 输入图片 fileout: 输出图片 width: 输出图片宽度 height:输出图片高度 type:输出图

  • Python用Pillow(PIL)进行简单的图像操作方法

    Python用Pillow(PIL)进行简单的图像操作方法 颜色与RGBA值 计算机通常将图像表示为RGB值,或者再加上alpha值(通透度,透明度),称为RGBA值.在Pillow中,RGBA的值表示为由4个整数组成的元组,分别是R.G.B.A.整数的范围0~255.RGB全0就可以表示黑色,全255代表黑色.可以猜测(255, 0, 0, 255)代表红色,因为R分量最大,G.B分量为0,所以呈现出来是红色.但是当alpha值为0时,无论是什么颜色,该颜色都不可见,可以理解为透明. from

  • Python编程深度学习绘图库之matplotlib

    matplotlib是python的一个开源的2D绘图库,它的原作者是John D. Hunter,因为在设计上借鉴了matlab,所以成为matplotlib.和Pillow一样是被广泛使用的绘图功能,而在深度学习相关的部分,matplotlib得宠的多.这篇文章将简单介绍一下如何安装以及使用它来画一些非常常见的统计图形. 概要信息 注意事项:由于Python2支持到2020年,很多python库都开始主要支持python3了,matplotlib的主分支也已经是python3了.而这篇文章中

  • python+pillow绘制矩阵盖尔圆简单实例

    本文主要研究的是使用Python+pillow绘制矩阵盖尔圆的一个实例,具体如下. 盖尔圆是矩阵特征值估计时常用的方法之一,其定义为: 与盖尔圆有关的两个定理为: 定理1:矩阵A的所有特征值均落在它的所有盖尔圆的并集之中. 定理2:将矩阵A的全体盖尔圆的并集按连通部分分成若干个子集,(一个子集由完全连通的盖尔圆组成,不同子集没有相连通的部分),对每个子集,若它恰好由K个盖尔圆组成,则该子集中恰好包含A的K个特征值. 与盖尔圆定理有关的几个推论为: 推论1:孤立盖尔圆中恰好包含一个特征值. 推论2

  • Python切片工具pillow用法示例

    本文实例讲述了Python切片工具pillow用法.分享给大家供大家参考,具体如下: 切片:使用切片将源图像分成许多的功能区域 因为要对图片进行切片裁剪,所以用到切片工具必不可少,在ubuntu下有很多的图片处理工具,如 GIMP(Ubuntu的下的Photoshop),shotwell,shotter等等. 但是我想吧一张图片剪裁下来,用那些工具不怎么方便(其实可能是我没有找到而已),于是上网搜索资料,发现各式各类的工具,其中发现了pollow这款工具. 算是Python下的一个模块吧,这个模

  • Python编程图形库之Pillow使用方法讲解

    PIL vs Pillow PIL: Python Imaging Library,是python的图像处理库.由于PIL不兼容setuptools,再加上更新缓慢等因素,Alex Clark等一些社区好心人还是希望能够继续支持PIL,所以fork了PIL,这就是Pillow的缘起. Pillow的目标 推动和促进PIL的发展是Pillow的目标,主要通过如下的方式来进行 结合Travis CI和AppVeyor进行持续集成测试 活用github进行开发 结合Python Package Ind

  • Python计算库numpy进行方差/标准方差/样本标准方差/协方差的计算

    使用numpy可以做很多事情,在这篇文章中简单介绍一下如何使用numpy进行方差/标准方差/样本标准方差/协方差的计算. variance: 方差 方差(Variance)是概率论中最基础的概念之一,它是由统计学天才罗纳德·费雪1918年最早所提出.用于衡量数据离散程度,因为它能体现变量与其数学期望(均值)之间的偏离程度.具有相同均值的数据,而标准差可能不同,而通过标准差的大小则能更好地反映出数据的偏离度. 计算:一组数据1,2,3,4,其方差应该是多少? 计算如下: 均值=(1+2+3+4)/

  • Python中pillow知识点学习

    此系列意在记录于一些有趣的程序及对其的总结. 问题来源: https://github.com/Yixiaohan/show-me-the-code https://github.com/HT524/500LineorLess_CN 今天这个程序于一张图片中添加数字,类似于qq头像上的小红点,只不过这个是静态的. 首先使用的是pillow这个图像库. 总体思路是通过Image.open()打开图像,设置要绘制的信息的格式,ImageDraw.Draw()生成被修改的实例,再通过text()方法进

随机推荐