python中numpy包使用教程之数组和相关操作详解


Posted in Python onJuly 30, 2017

前言

大家应该都有所了解,下面就简单介绍下Numpy,NumPy(Numerical Python)是一个用于科学计算第三方的Python包。

NumPy提供了许多高级的数值编程工具,如:矩阵数据类型、矢量处理,以及精密的运算库。专为进行严格的数字处理而产生。下面本文将详细介绍关于python中numpy包使用教程之数组和相关操作的相关内容,下面话不多说,来一起看看详细的介绍:

一、数组简介

Numpy中,最重要的数据结构是:多维数组类型(numpy.ndarray

ndarray由两部分组成:

  • 实际所持有的数据;
  • 描述这些数据的元数据(metadata)

数组(即矩阵)的维度被称为axes,维数称为rank

ndarray 的重要属性包括: 

  • ndarray.ndim:数组的维数,也称为rank
  • ndarray.shape:数组各维的大小,对一个n行m列的矩阵来说, shape 为 (n,m)
  • ndarray.size:元素的总数。
  • ndarray.dtype:每个元素的类型,可以是numpy.int32, numpy.int16, and numpy.float64等
  • ndarray.itemsize:每个元素占用的字节数。
  • ndarray.data:指向数据内存。

二、数组的使用

使用numpy前要先导入模块,使用下面的语句导入模块:

improt numpy as np #其中np为numpy的别名,是一种习惯用法

1.使用array方法生成数组

array,也就是数组,是numpy中最基础的数据结构,最关键的属性是维度和元素类型,在numpy中,可以非常方便地创建各种不同类型的多维数组,并且执行一些基本基本操作,生成数组的方法有一下几种:
以list或tuple变量产生以为数组:

>>> print np.array([1,2,3,4]) 
[1 2 3 4] 
>>> print np.array((1.2,2,3,4)) 
[ 1.2 2. 3. 4. ]

以list或tuple变量为元素产生二维数组或者多维数组:

>>> x = np.array(((1,2,3),(4,5,6))) 
>>> x 
array([[1, 2, 3], 
 [4, 5, 6]]) 
>>> y = np.array([[1,2,3],[4,5,6]]) 
>>> y 
array([[1, 2, 3], 
 [4, 5, 6]])

2.使用numpy.arange方法生成数组

>>> print np.arange(15) 
[ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14] 
>>> print type(np.arange(15)) 
<type 'numpy.ndarray'>

3.使用内置函数生成特殊矩阵(数组)

零矩阵

>>> print np.zeros((3,4)) 
[[ 0. 0. 0. 0.] 
 [ 0. 0. 0. 0.] 
 [ 0. 0. 0. 0.]]

一矩阵

>>> print np.ones((3,4)) 
[[ 1. 1. 1. 1.] 
 [1. 1. 1. 1.] 
 [ 1. 1. 1. 1.]]

单位矩阵

>>> print np.eye(3) 
[[ 1. 0. 0.] 
 [0. 1. 0.] 
 [ 0. 0. 1.]]

4.索引与切片

>>> x = np.array(((1,2,3),(4,5,6))) 
>>> x[1,2] #获取第二行第三列的数 
6
>>> y=x[:,1] #获取第二列 
>>> y 
array([2, 5])

与python语法一致,不再举例。

5.获取数组属性

>>> a = np.zeros((2,2,2)) 
>>> print a.ndim #数组的维数 
3 
>>> print a.shape #数组每一维的大小 
(2, 2, 2) 
>>> print a.size #数组的元素数 
8 
>>> print a.dtype #元素类型 
float64 
>>> print a.itemsize #每个元素所占的字节数 
8

6.数组变换

多维转换为一维:

>>> x 
array([[1, 2, 3], 
  [4, 5, 6]]) 
>>> x.flatten() 
array([1, 2, 3, 4, 5, 6])

一维转换为多维:

>>> print np.arange(15).reshape(3,5) #改变形状,将一维的改成三行五列 
[[ 0 1 2 3 4] 
 [ 5 6 7 8 9] 
 [10 11 12 13 14]]

转置:

>>> x 
array([[1, 2, 3], 
  [4, 5, 6]]) 
>>> x.transpose() 
array([[1, 4], 
  [2, 5], 
  [3, 6]])

7.数组组合

水平组合:

>>> y=x 
>>> numpy.hstack((x,y)) 
array([[1, 2, 3, 1, 2, 3], 
  [4, 5, 6, 4, 5, 6]]

垂直组合

>>> numpy.vstack((x,y)) 
array([[1, 2, 3], 
  [4, 5, 6], 
  [1, 2, 3], 
  [4, 5, 6]])

用concatenate函数可以同时实现这两种方式,通过指定axis参数,默认为0,垂直组合。

>>> numpy.concatenate((x,y)) 
array([[1, 2, 3], 
  [4, 5, 6], 
  [1, 2, 3], 
  [4, 5, 6]]) 
>>> numpy.concatenate((x,y),axis=1) 
array([[1, 2, 3, 1, 2, 3], 
  [4, 5, 6, 4, 5, 6]])

8.数组分割

垂直分割

>>> z 
array([[1, 2, 3], 
  [4, 5, 6], 
  [1, 2, 3], 
  [4, 5, 6]]) 
>>> numpy.vsplit(z,2) #注意这里设置的分割数目必须可以被行数整除 
[array([[1, 2, 3], 
  [4, 5, 6]]), array([[1, 2, 3], 
  [4, 5, 6]])]

水平分割

>>> numpy.hsplit(z,3) 
[array([[1], 
  [4], 
  [1], 
  [4]]), array([[2], 
  [5], 
  [2], 
  [5]]), array([[3], 
  [6], 
  [3], 
  [6]])]

用split函数可以同时实现这两个效果,通过设置其axis参数区别,与组合类似,这里不在演示。

三、矩阵

通过上面对数组的操作可以知道,numpy中可以通过数组模拟矩阵,但是numpy也有专门处理矩阵的数据结构——matrix。

1.生成矩阵

>>> numpy.mat('1 2 3;4 5 6;7 8 9') 
matrix([[1, 2, 3], 
  [4, 5, 6], 
  [7, 8, 9]])

2.数组矩阵转化

矩阵转数组

>>> m=numpy.mat('1 2 3;4 5 6;7 8 9') 
>>> numpy.array(m) 
array([[1, 2, 3], 
  [4, 5, 6], 
  [7, 8, 9]])

数组转矩阵

>>> n=numpy.array(m) 
>>> numpy.mat(n) 
matrix([[1, 2, 3], 
  [4, 5, 6], 
  [7, 8, 9]])

3.矩阵方法

求逆:

>>> m.I 
matrix([[ -4.50359963e+15, 9.00719925e+15, -4.50359963e+15], 
  [ 9.00719925e+15, -1.80143985e+16, 9.00719925e+15], 
  [ -4.50359963e+15, 9.00719925e+15, -4.50359963e+15]])

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持

Python 相关文章推荐
Python爬虫爬验证码实现功能详解
Apr 14 Python
浅谈python抛出异常、自定义异常, 传递异常
Jun 20 Python
python批量制作雷达图的实现方法
Jul 26 Python
python paramiko模块学习分享
Aug 23 Python
用Python将mysql数据导出成json的方法
Aug 21 Python
django 实现编写控制登录和访问权限控制的中间件方法
Jan 15 Python
将string类型的数据类型转换为spark rdd时报错的解决方法
Feb 18 Python
python+pyqt5实现图片批量缩放工具
Mar 18 Python
Python 存储字符串时节省空间的方法
Apr 23 Python
关于Python作用域自学总结
Jun 10 Python
Python流程控制 if else实现解析
Sep 02 Python
Python HTMLTestRunner库安装过程解析
May 25 Python
利用Python批量压缩png方法实例(支持过滤个别文件与文件夹)
Jul 30 #Python
Python利用BeautifulSoup解析Html的方法示例
Jul 30 #Python
利用python获取当前日期前后N天或N月日期的方法示例
Jul 30 #Python
Python 装饰器使用详解
Jul 29 #Python
python实现数据图表
Jul 29 #Python
基于Python的XSS测试工具XSStrike使用方法
Jul 29 #Python
使用Kivy将python程序打包为apk文件
Jul 29 #Python
You might like
php侧拉菜单 漂亮,可以向右或者向左展开,支持FF,IE
2009/10/15 PHP
处理php自动反斜杠的函数代码
2010/01/05 PHP
php实现阿拉伯数字和罗马数字相互转换的方法
2015/04/17 PHP
PHP正则表达式入门教程(推荐)
2016/05/18 PHP
PHP简单检测网址是否能够正常打开的方法
2016/09/04 PHP
ThinkPHP实现简单登陆功能
2017/04/28 PHP
PHP 数组黑名单/白名单实例代码详解
2019/06/04 PHP
jquery中实现简单的tabs插件功能的代码
2011/03/02 Javascript
使用 JScript 创建 .exe 或 .dll 文件的方法
2011/07/13 Javascript
javaScript 删除字符串空格多种方法小结
2012/10/24 Javascript
iframe里面的元素触发父窗口元素事件的jquery代码
2014/10/19 Javascript
jquery 实现返回顶部功能
2014/11/17 Javascript
在JavaScript中处理时间之getHours()方法的使用
2015/06/10 Javascript
基于javascript实现图片切换效果
2016/04/17 Javascript
jQuery编写textarea输入字数限制代码
2017/03/23 jQuery
vue router仿天猫底部导航栏功能
2017/10/18 Javascript
详解HTML5 使用video标签实现选择摄像头功能
2017/10/25 Javascript
通过fastclick源码分析彻底解决tap“点透”
2017/12/24 Javascript
angularjs实现分页和搜索功能
2018/01/03 Javascript
JQuery Ajax如何实现注册检测用户名
2020/09/25 jQuery
vue3自定义dialog、modal组件的方法
2021/01/04 Vue.js
在Python中使用itertools模块中的组合函数的教程
2015/04/13 Python
使用Python来开发Markdown脚本扩展的实例分享
2016/03/04 Python
python动态文本进度条的实例代码
2020/01/22 Python
IntelliJ 中配置 Anaconda的过程图解
2020/06/01 Python
html5使用canvas绘制太阳系效果
2014/12/15 HTML / CSS
日本著名的服饰鞋帽综合类购物网站:MAGASEEK
2019/01/09 全球购物
2019年分享net面试的经历和题目
2016/08/07 面试题
校园安全教育广播稿
2014/02/17 职场文书
气象学专业个人求职信
2014/04/22 职场文书
网络编辑求职信
2014/04/30 职场文书
高中生学习计划书
2014/09/15 职场文书
青年志愿者服务活动总结
2015/05/06 职场文书
毕业设计答辩开场白
2015/05/29 职场文书
mysql自增长id用完了该怎么办
2022/02/12 MySQL
美元符号 $
2022/02/17 杂记