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之编写类之一创建实例
Oct 11 Python
Python常用时间操作总结【取得当前时间、时间函数、应用等】
May 11 Python
详解 Python中LEGB和闭包及装饰器
Aug 03 Python
python3操作微信itchat实现发送图片
Feb 24 Python
Python实现基于KNN算法的笔迹识别功能详解
Jul 09 Python
Python之指数与E记法的区别详解
Nov 21 Python
python3.7通过thrift操作hbase的示例代码
Jan 14 Python
python中执行smtplib失败的处理方法
Jul 01 Python
如何用Python 加密文件
Sep 10 Python
教你使用Sublime text3搭建Python开发环境及常用插件安装另分享Sublime text3最新激活注册码
Nov 12 Python
全网最详细的PyCharm+Anaconda的安装过程图解
Jan 25 Python
在 Golang 中实现 Cache::remember 方法详解
Mar 30 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使用Jpgraph创建折线图效果示例
2017/02/15 PHP
PHP插件PHPMailer发送邮件功能
2017/02/28 PHP
取得窗口大小 兼容所有浏览器的js代码
2011/08/09 Javascript
基于JQuery的抓取博客园首页RSS的代码
2011/12/01 Javascript
深入浅析NodeJs并发异步的回调处理
2015/12/21 NodeJs
JavaScript实现多种排序算法
2016/02/24 Javascript
jQuery实现图片加载完成后改变图片大小的方法
2016/03/29 Javascript
jQuery操作动态生成的内容的方法
2016/05/28 Javascript
灵活使用数组制作图片切换js实现
2016/07/28 Javascript
js 实现一些跨浏览器的事件方法详解及实例
2016/10/27 Javascript
微信小程序 支付功能实现PHP实例详解
2017/05/12 Javascript
nodejs模块学习之connect解析
2017/07/05 NodeJs
浅谈JsonObject中的key-value数据解析排序问题
2017/12/06 Javascript
node.js用fs.rename强制重命名或移动文件夹的方法
2017/12/27 Javascript
详解Vue This$Store总结
2018/12/17 Javascript
详解vue3.0 的 Composition API 的一种使用方法
2020/10/26 Javascript
Python使用OpenCV进行标定
2018/05/08 Python
对TensorFlow中的variables_to_restore函数详解
2018/07/30 Python
python之pyqt5通过按钮改变Label的背景颜色方法
2019/06/13 Python
win10环境下配置vscode python开发环境的教程详解
2019/10/16 Python
Python实现微信好友的数据分析
2019/12/16 Python
节日快乐! Python画一棵圣诞树送给你
2019/12/24 Python
python归并排序算法过程实例讲解
2020/11/04 Python
CSS3实现跳动的动画效果
2016/09/12 HTML / CSS
用HTML5制作一个简单的弹力球游戏
2015/05/12 HTML / CSS
Holland & Barrett爱尔兰:英国领先的健康零售商
2019/03/31 全球购物
培训主管岗位职责
2014/02/01 职场文书
安全责任书模板
2014/07/22 职场文书
学校勤俭节约倡议书
2015/04/29 职场文书
驳回起诉裁定书
2015/05/19 职场文书
2015初中教导处工作总结
2015/07/21 职场文书
公司致全体员工的感谢信
2019/06/24 职场文书
婚礼必备主持词范本!
2019/07/23 职场文书
一次项目中Thinkphp绕过禁用函数的实战记录
2021/11/17 PHP
Python采集爬取京东商品信息和评论并存入MySQL
2022/04/12 Python
python的html标准库
2022/04/29 Python