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的轻便web框架Bottle
Apr 08 Python
python2.7的编码问题与解决方法
Oct 04 Python
python模块之sys模块和序列化模块(实例讲解)
Sep 13 Python
用Django实现一个可运行的区块链应用
Mar 08 Python
Python3获取电脑IP、主机名、Mac地址的方法示例
Apr 11 Python
pyinstaller参数介绍以及总结详解
Jul 12 Python
django认证系统 Authentication使用详解
Jul 22 Python
python获取Linux发行版名称
Aug 30 Python
Spring @Enable模块驱动原理及使用实例
Jun 23 Python
python+django+selenium搭建简易自动化测试
Aug 19 Python
python 常用日期处理-- datetime 模块的使用
Sep 02 Python
python中Tkinter 窗口之输入框和文本框的实现
Apr 12 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异常处理技术,顶级异常处理器
2012/06/13 PHP
php实现获取文件mime类型的方法
2015/02/11 PHP
PHP5.4起内置web服务器使用方法
2016/08/09 PHP
php获取手机端的号码以及ip地址实例代码
2018/09/12 PHP
PHP基于swoole多进程操作示例
2019/08/12 PHP
js Flash插入函数免激活代码
2009/03/31 Javascript
JQuery 无废话系列教程(二) jquery实战篇上
2009/06/23 Javascript
jQuery Ajax Post 回调函数不执行问题的解决方法
2016/08/15 Javascript
利用Node.js对文件进行重命名
2017/03/12 Javascript
vue组件之Alert的实现代码
2017/10/17 Javascript
nodejs实现连接mongodb数据库的方法示例
2018/03/15 NodeJs
通过angular CDK实现页面元素拖放的步骤详解
2020/07/01 Javascript
python使用win32com库播放mp3文件的方法
2015/05/30 Python
python分析作业提交情况
2017/11/22 Python
Python3实现发送QQ邮件功能(html)
2017/12/15 Python
python 不同方式读取文件速度不同的实例
2018/11/09 Python
Python判断一个文件夹内哪些文件是图片的实例
2018/12/07 Python
Django model 中设置联合约束和联合索引的方法
2019/08/06 Python
HTML5头部标签的一些常用信息小结
2016/10/23 HTML / CSS
使用html5 canvas绘制圆环动效
2019/06/03 HTML / CSS
美国领先的奢侈手表在线零售商:WatchMaxx
2017/12/17 全球购物
阿根廷旅游网站:almundo阿根廷
2018/02/12 全球购物
澳大利亚厨房和家用电器购物网站:Bing Lee
2021/01/11 全球购物
Linux中如何设置Java环境变量(Ubuntu)
2016/07/24 面试题
彩色的翅膀教学反思
2014/04/25 职场文书
会议室标语
2014/06/21 职场文书
财产分割协议书范本
2014/11/03 职场文书
2014年店长工作总结
2014/11/17 职场文书
鲁滨逊漂流记读书笔记
2015/06/26 职场文书
婚宴主持词
2015/06/30 职场文书
2015年秋季学校开学标语
2015/07/16 职场文书
2015秋季开学典礼主持词
2015/07/16 职场文书
大学优秀学生主要事迹材料
2015/11/04 职场文书
大学生入党自我鉴定范文
2019/06/21 职场文书
vue3如何优雅的实现移动端登录注册模块
2021/03/29 Vue.js
mysql如何查询连续记录
2022/05/11 MySQL