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


Posted in Python onDecember 28, 2018

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

NumPy vs SciPy

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

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

最近比较热门的深度学习,比如在神经网络的算法,多维数组的使用是一个极为重要的场景。如果你熟悉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进行。

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

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提供了很方便的初始化的函数,比如

Python编程深度学习计算库之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$

总结

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

Python 相关文章推荐
python xml解析实例详解
Nov 14 Python
Python实现的各种常见分布算法示例
Dec 13 Python
python学习--使用QQ邮箱发送邮件代码实例
Apr 16 Python
python3.x+pyqt5实现主窗口状态栏里(嵌入)显示进度条功能
Jul 04 Python
解决yum对python依赖版本问题
Jul 05 Python
python按修改时间顺序排列文件的实例代码
Jul 25 Python
python 实现快速生成连续、随机字母列表
Nov 28 Python
python获取引用对象的个数方式
Dec 20 Python
python字典和json.dumps()的遇到的坑分析
Mar 11 Python
python编写实现抽奖器
Sep 10 Python
关于PyCharm安装后修改路径名称使其可重新打开的问题
Oct 20 Python
C++和python实现阿姆斯特朗数字查找实例代码
Dec 07 Python
python将txt文档每行内容循环插入数据库的方法
Dec 28 #Python
pandas 把数据写入txt文件每行固定写入一定数量的值方法
Dec 28 #Python
Python计算库numpy进行方差/标准方差/样本标准方差/协方差的计算
Dec 28 #Python
Python编程深度学习绘图库之matplotlib
Dec 28 #Python
对pandas写入读取h5文件的方法详解
Dec 28 #Python
Python线程池模块ThreadPoolExecutor用法分析
Dec 28 #Python
Python实现的逻辑回归算法示例【附测试csv文件下载】
Dec 28 #Python
You might like
php+mysql数据库实现无限分类的方法
2014/12/12 PHP
Laravel学习教程之从入口到输出过程详解
2017/08/27 PHP
PHP实现的mysql操作类【MySQL与MySQLi方式】
2017/10/07 PHP
如何优雅的使用 laravel 的 validator验证方法
2018/11/11 PHP
AutoSave/自动存储功能实现
2007/03/24 Javascript
JS 创建对象(常见的几种方法)
2008/11/03 Javascript
input 高级限制级用法
2009/03/26 Javascript
JavaScript OOP类与继承
2009/11/15 Javascript
iframe实用操作锦集
2014/04/22 Javascript
JS使用ajax从xml文件动态获取数据显示的方法
2015/03/24 Javascript
javascript实现炫酷的拖动分页
2015/05/11 Javascript
javascript使用Promise对象实现异步编程
2016/03/01 Javascript
JS获得多个同name 的input输入框的值的实现方法
2017/01/09 Javascript
Vue自定义事件(详解)
2017/08/19 Javascript
C#实现将一个字符转换为整数
2017/12/12 Javascript
JS学习笔记之贪吃蛇小游戏demo实例详解
2019/05/29 Javascript
[04:42]5分钟带你了解什么是DOTA2(第一期)
2017/02/07 DOTA
python类定义的讲解
2013/11/01 Python
Python统计文件中去重后uuid个数的方法
2015/07/30 Python
pygame加载中文名mp3文件出现error
2017/03/31 Python
Python模糊查询本地文件夹去除文件后缀的实例(7行代码)
2017/11/09 Python
对python中dict和json的区别详解
2018/12/18 Python
Python测试Kafka集群(pykafka)实例
2019/12/23 Python
Python MySQL 日期时间格式化作为参数的操作
2020/03/02 Python
在spyder IPython console中,运行代码加入参数的实例
2020/04/20 Python
python获取linux系统信息的三种方法
2020/10/14 Python
python中count函数知识点浅析
2020/12/17 Python
CSS3制作3D立方体loading特效
2020/11/09 HTML / CSS
颇特女士:NET-A-PORTER(直邮中国)
2020/07/11 全球购物
架构师岗位职责
2013/11/18 职场文书
岗位竞聘书范文
2014/03/31 职场文书
微电影大赛策划方案
2014/06/05 职场文书
计生工作先进事迹
2014/08/15 职场文书
幼师个人总结范文
2015/02/28 职场文书
如何起草一份正确的合伙创业协议书?
2019/07/04 职场文书
交通安全宣传标语(100条)
2019/08/22 职场文书