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字符编码
Nov 12 Python
python numpy和list查询其中某个数的个数及定位方法
Jun 27 Python
Python3 获取一大段文本之间两个关键字之间的内容方法
Oct 11 Python
基于python的selenium两种文件上传操作实现详解
Sep 19 Python
python3的UnicodeDecodeError解决方法
Dec 20 Python
Python post请求实现代码实例
Feb 28 Python
Python通过正则库爬取淘宝商品信息代码实例
Mar 02 Python
基于python 等频分箱qcut问题的解决
Mar 03 Python
Python 使用office365邮箱的示例
Oct 29 Python
五种Python转义表示法
Nov 27 Python
解决Python字典查找报Keyerror的问题
May 26 Python
pytorch finetuning 自己的图片进行训练操作
Jun 05 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
解决PhpMyAdmin中导入2M以上大文件限制的方法分享
2014/06/06 PHP
php使用GeoIP库实例
2014/06/27 PHP
thinkPHP框架对接支付宝即时到账接口回调操作示例
2016/11/14 PHP
PHP基于关联数组20行代码搞定约瑟夫问题示例
2017/11/07 PHP
php慢查询日志和错误日志使用详解
2021/02/27 PHP
一个很简单的办法实现TD的加亮效果.
2006/06/29 Javascript
javascript Array数组对象的扩展函数代码
2010/05/22 Javascript
Javascript中找到子元素在父元素内相对位置的代码
2012/07/21 Javascript
jQuery学习笔记之 Ajax操作篇(一) - 数据加载
2014/06/23 Javascript
JavaScript实现字符串与日期的互相转换及日期的格式化
2016/03/07 Javascript
EasyUi 打开对话框后控件赋值及赋值后不显示的问题解决办法
2017/01/19 Javascript
微信小程序 侧滑删除(左滑删除)
2017/05/23 Javascript
JS中Safari浏览器中的Date
2017/07/17 Javascript
JS动态修改网页body的背景色实例代码
2017/10/07 Javascript
简单的React SSR服务器渲染实现
2018/12/11 Javascript
Vue项目实现简单的权限控制管理功能
2019/07/17 Javascript
解决layui的使用以及针对select、radio等表单组件不显示的问题
2019/09/05 Javascript
vue-cli和v-charts实现可视化图表过程解析
2019/10/08 Javascript
[01:12]DOTA2次级职业联赛 - Newbee.Y 战队宣传片
2014/12/01 DOTA
[00:31]DOTA2上海特级锦标赛 Fnatic战队宣传片
2016/03/04 DOTA
实例解析Python设计模式编程之桥接模式的运用
2016/03/02 Python
python生成tensorflow输入输出的图像格式的方法
2018/02/12 Python
python实现数据库跨服务器迁移
2018/04/12 Python
Python 循环语句之 while,for语句详解
2018/04/23 Python
Python散点图与折线图绘制过程解析
2019/11/30 Python
基于python traceback实现异常的获取与处理
2019/12/13 Python
Python使用pdb调试代码的技巧
2020/05/03 Python
linux mint中搜狗输入法导致pycharm卡死的问题
2020/10/28 Python
美国高级音响品牌:Master&Dynamic
2018/07/05 全球购物
代码中finally中的代码会不会执行
2012/02/06 面试题
2014年健康教育实施方案
2014/02/17 职场文书
2015年见习期工作总结
2014/12/12 职场文书
2014年机关工会工作总结
2014/12/19 职场文书
初中政教处工作总结
2015/08/12 职场文书
2016感恩母亲节校园广播稿
2015/12/17 职场文书
idea 在springboot中使用lombok插件的方法
2021/08/02 Java/Android