Python NumPy库安装使用笔记


Posted in Python onMay 18, 2015

1. NumPy安装
使用pip包管理工具进行安装

$ sudo pip install numpy

使用pip包管理工具安装ipython(交互式shell工具)
$ sudo pip instlal ipython

$ ipython --pylab  #pylab模式下, 会自动导入SciPy, NumPy, Matplotlib模块

2. NumPy基础

2.1. NumPy数组对象

具体解释可以看每一行代码后的解释和输出

In [1]: a = arange(5)  # 创建数据

In [2]: a.dtype

Out[2]: dtype('int64')  # 创建数组的数据类型

In [3]: a.shape  # 数组的维度, 输出为tuple

Out[3]: (5,)

In [6]: m = array([[1, 2], [3, 4]])  # array将list转换为NumPy数组对象

In [7]: m  # 创建多维数组

Out[7]:

array([[1, 2],

       [3, 4]])

In [10]: m.shape  # 维度为2 * 2

Out[10]: (2, 2)

In [14]: m[0, 0]  # 访问多维数组中特定位置的元素, 下标从0开始

Out[14]: 1

In [15]: m[0, 1]

Out[15]: 2

2.2. 数组的索引和切片

In [16]: a[2: 4]  # 切片操作类似与Python中list的切片操作

Out[16]: array([2, 3])

In [18]: a[2 : 5: 2]  # 切片步长为2

Out[18]: array([2, 4])

In [19]: a[ : : -1]  # 翻转数组

Out[19]: array([4, 3, 2, 1, 0])

In [20]: b = arange(24).reshape(2, 3, 4)  # 修改数组的维度

In [21]: b.shape

Out[21]: (2, 3, 4)

In [22]: b  # 打印数组

Out[22]:

array([[[ 0,  1,  2,  3],

        [ 4,  5,  6,  7],

        [ 8,  9, 10, 11]],

       [[12, 13, 14, 15],

        [16, 17, 18, 19],

        [20, 21, 22, 23]]])

In [23]: b[1, 2, 3]  # 选取特定元素

Out[23]: 23

In [24]: b[ : , 0, 0]  # 忽略某个下标可以用冒号代替

Out[24]: array([ 0, 12])

In [23]: b[1, 2, 3]

Out[23]: 23

In [24]: b[ : , 0, 0]  # 忽略多个下标可以使用省略号代替

Out[24]: array([ 0, 12])

In [26]: b.ravel()  # 数组的展平操作

Out[26]:

array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16,

       17, 18, 19, 20, 21, 22, 23])

In [27]: b.flatten()  # 与revel功能相同, 这个函数会请求分配内存来保存结果

Out[27]:

array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16,

       17, 18, 19, 20, 21, 22, 23])

In [30]: b.shape = (6, 4)  # 可以直接对shape属性赋值元组来设置维度

In [31]: b

Out[31]:

array([[ 0,  1,  2,  3],

       [ 4,  5,  6,  7],

       [ 8,  9, 10, 11],

       [12, 13, 14, 15],

       [16, 17, 18, 19],

       [20, 21, 22, 23]])

In [30]: b.shape = (6, 4)  # 矩阵的转置

In [31]: b

Out[31]:

array([[ 0,  1,  2,  3],

       [ 4,  5,  6,  7],

       [ 8,  9, 10, 11],

       [12, 13, 14, 15],

       [16, 17, 18, 19],

       [20, 21, 22, 23]])

2.3. 组合数组

In [1]: a = arange(9).reshape(3, 3)  # 生成数组对象并改变维度

In [2]: a

Out[2]:

array([[0, 1, 2],

       [3, 4, 5],

       [6, 7, 8]])

In [3]: b = a * 2  # 对a数组对象所有元素乘2

In [4]: b

Out[4]:

array([[ 0,  2,  4],

       [ 6,  8, 10],

       [12, 14, 16]])

#######################

In [5]: hstack((a, b))  # 水平组合数组a和数组b

Out[5]:

array([[ 0,  1,  2,  0,  2,  4],

       [ 3,  4,  5,  6,  8, 10],

       [ 6,  7,  8, 12, 14, 16]])

       

In [6]: vstack((a, b))  # 垂直组合数组a和数组b

Out[6]:

array([[ 0,  1,  2],

       [ 3,  4,  5],

       [ 6,  7,  8],

       [ 0,  2,  4],

       [ 6,  8, 10],

       [12, 14, 16]])

In [7]: dstack((a, b))  # 深度组合数组, 沿z轴方向层叠组合数组

Out[7]:

array([[[ 0,  0],

        [ 1,  2],

        [ 2,  4]],

       [[ 3,  6],

        [ 4,  8],

        [ 5, 10]],

       [[ 6, 12],

        [ 7, 14],

        [ 8, 16]]])

2.4. 分割数组

In [8]: a

Out[8]:

array([[0, 1, 2],

       [3, 4, 5],

       [6, 7, 8]])

In [9]: hsplit(a, 3)  # 将数组沿水平方向分割成三个相同大小的子数组

Out[9]:

[array([[0],

        [3],

        [6]]), 

 array([[1],

        [4],

        [7]]), 

 array([[2],

        [5],

        [8]])]

In [10]: vsplit(a, 3)  # 将数组沿垂直方向分割成三个子数组

Out[10]: [array([[0, 1, 2]]), array([[3, 4, 5]]), array([[6, 7, 8]])]

2.5. 数组的属性

In [12]: a.ndim  # 给出数组的尾数或数组的轴数

Out[12]: 2

In [13]: a.size  # 数组中元素的个数

Out[13]: 9

In [14]: a.itemsize  # 数组中元素在内存中所占字节数(int64)

Out[14]: 8

In [15]: a.nbytes  # 数组所占总字节数, size * itemsize

Out[15]: 72

In [18]: a.T  # 和transpose函数一样, 求数组的转置

Out[18]:

array([[0, 3, 6],

       [1, 4, 7],

       [2, 5, 8]])

2.6. 数组的转换

In [19]: a.tolist()  # 将NumPy数组转换成python中的list

Out[19]: [[0, 1, 2], [3, 4, 5], [6, 7, 8]]

3. 常用函数

In [22]: c = eye(2)  # 构建2维单位矩阵

In [23]: c

Out[23]:

array([[ 1.,  0.],

       [ 0.,  1.]])

In [25]: savetxt("eye.txt", c)  # 将矩阵保存到文件中

In [5]: c, v = loadtxt("test.csv", delimiter=",", usecols=(0, 1), unpack=True)  # 分隔符为, usecols为元组表示要获取的字段数据(每一行的第零段和第一段), unpack为True表示拆分存储不同列的数据, 分别存入c, v

In [12]: c

Out[12]: array([ 1.,  4.,  7.])

In [13]: mean(c)  # 计算矩阵c的mean均值

Out[13]: 4.0

In [14]: np.max(c)  # 求数组中的最大值

Out[14]: 7.0

In [15]: np.min(c)  # 求数组中的最小值

Out[15]: 1.0

In [16]: np.ptp(c)  # 返回数组最大值和最小值之间的差值

Out[16]: 6.0

In [18]: numpy.median(c)  # 找到数组中的中位数(中间两个数的平均值)

Out[18]: 4.0

In [19]: numpy.var(c)  # 计算数组的方差

Out[19]: 6.0

In [20]: numpy.diff(c)  # 返回相邻数组元素的差值构成的数组

Out[20]: array([ 3.,  3.])

In [21]: numpy.std(c)  # 计算数组的标准差

Out[21]: 2.4494897427831779

In [22]: numpy.where(c > 3)  # 返回满足条件的数组元素的下标组成的数组

Out[22]: (array([1, 2]),)
Python 相关文章推荐
python中from module import * 的一个坑
Jul 20 Python
Python 检查数组元素是否存在类似PHP isset()方法
Oct 14 Python
python统计日志ip访问数的方法
Jul 06 Python
基于python指定包的安装路径方法
Oct 27 Python
Python API 自动化实战详解(纯代码)
Jun 11 Python
Django 源码WSGI剖析过程详解
Aug 05 Python
jupyter lab的目录调整及设置默认浏览器为chrome的方法
Apr 10 Python
Win10用vscode打开anaconda环境中的python出错问题的解决
May 25 Python
Python基于smtplib模块发送邮件代码实例
May 29 Python
基于Python实现体育彩票选号器功能代码实例
Sep 16 Python
python字典进行运算原理及实例分享
Aug 02 Python
python的列表生成式,生成器和generator对象你了解吗
Mar 16 Python
Python中转换角度为弧度的radians()方法
May 18 #Python
Python Matplotlib库入门指南
May 18 #Python
解读Python中degrees()方法的使用
May 18 #Python
python修改操作系统时间的方法
May 18 #Python
Python中的hypot()方法使用简介
May 18 #Python
Python批量转换文件编码格式
May 17 #Python
Python实现批量下载文件
May 17 #Python
You might like
PHP冒泡排序算法代码详细解读
2011/07/17 PHP
PHP性能优化 产生高度优化代码
2011/07/22 PHP
php array的学习笔记
2012/05/16 PHP
php输出xml属性的方法
2015/03/19 PHP
php实现scws中文分词搜索的方法
2015/12/25 PHP
php设计模式之适配器模式原理、用法及注意事项详解
2019/09/24 PHP
laravel按天、按小时,查询数据的实例
2019/10/09 PHP
js获取判断上传文件后缀名的示例代码
2014/02/19 Javascript
js动态往表格的td中添加图片并注册事件
2014/06/12 Javascript
javascript中new关键字详解
2015/12/14 Javascript
JavaScript的Vue.js库入门学习教程
2016/05/23 Javascript
IOS中safari下的select下拉菜单文字过长不换行的解决方法
2016/09/26 Javascript
深入理解vue Render函数
2017/07/19 Javascript
vue实现移动端轻量日期组件不依赖第三方库的方法
2019/04/28 Javascript
100行代码实现vue表单校验功能(小白自编)
2019/11/19 Javascript
微信小程序实现页面监听自定义组件的触发事件
2020/11/01 Javascript
Linux下为不同版本python安装第三方库
2016/08/31 Python
详解pandas删除缺失数据(pd.dropna()方法)
2019/06/25 Python
解决python gdal投影坐标系转换的问题
2020/01/17 Python
keras获得model中某一层的某一个Tensor的输出维度教程
2020/01/24 Python
Django ForeignKey与数据库的FOREIGN KEY约束详解
2020/05/20 Python
HTML5的结构和语义(3):语义性的块级元素
2008/10/17 HTML / CSS
德国孕妇装和婴童服装网上商店:bellybutton
2018/04/12 全球购物
盖尔斯工厂店:GUESS Factory
2020/01/21 全球购物
爱情检讨书大全
2014/01/21 职场文书
应届毕业生个人求职信范文
2014/01/29 职场文书
房屋转让协议书范本
2014/04/11 职场文书
管理提升方案
2014/06/04 职场文书
文化产业实施方案
2014/06/07 职场文书
党员干部形式主义个人整改措施
2014/09/17 职场文书
四风问题对照检查材料
2014/09/22 职场文书
检察院院长群众路线教育实践活动个人整改措施
2014/10/04 职场文书
工作经验交流材料
2014/12/30 职场文书
写给老婆的保证书
2015/02/27 职场文书
2015年酒店服务员工作总结
2015/05/18 职场文书
java调用Restful接口的三种方法
2021/08/23 Java/Android