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和pyqt实现360的CLable控件
Feb 21 Python
Python中用Spark模块的使用教程
Apr 13 Python
python装饰器与递归算法详解
Feb 18 Python
python实现textrank关键词提取
Jun 22 Python
django开发post接口简单案例,获取参数值的方法
Dec 11 Python
浅谈python中真正关闭socket的方法
Dec 18 Python
Python3.5面向对象编程图文与实例详解
Apr 24 Python
用Python实现将一张图片分成9宫格的示例
Jul 05 Python
Python调用shell命令常用方法(4种)
May 11 Python
python爬取天气数据的实例详解
Nov 20 Python
python statsmodel的使用
Dec 21 Python
python文件与路径操作神器 pathlib
Apr 01 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与C#分别格式化文件大小的代码
2011/05/14 PHP
php生成shtml类用法实例
2014/12/09 PHP
关于PHP 如何用 curl 读取 HTTP chunked 数据
2016/02/26 PHP
CI框架源码解读之URI.php中_fetch_uri_string()函数用法分析
2016/05/18 PHP
浅谈PHP无限极分类原理
2019/03/14 PHP
js 父窗口控制子窗口的行为-打开,关闭,重定位,回复
2010/04/20 Javascript
jquery 学习之二 属性相关
2010/11/23 Javascript
SharePoint 客户端对象模型 (一) ECMA Script
2011/05/22 Javascript
js传中文参数controller里获取参数乱码问题解决方法
2014/01/03 Javascript
Jquery原生态实现表格header头随滚动条滚动而滚动
2014/03/18 Javascript
Ajax+FormData+javascript实现无刷新表单信息提交
2016/10/24 Javascript
JS获取年月日时分秒的方法分析
2016/11/28 Javascript
纯js的右下角弹窗实例
2017/03/12 Javascript
mpvue 如何使用腾讯视频插件的方法
2018/07/16 Javascript
详解react native页面间传递数据的几种方式
2018/11/07 Javascript
vue-router命名路由和编程式路由传参讲解
2019/01/19 Javascript
vue实现文件上传读取及下载功能
2020/11/17 Javascript
通过高德地图API获得某条道路上的所有坐标用于描绘道路的方法
2020/08/24 Javascript
Vue.js桌面端自定义滚动条组件之美化滚动条VScroll
2020/12/01 Vue.js
vue 使用class创建和清除水印的示例代码
2020/12/25 Vue.js
python发送邮件接收邮件示例分享
2014/01/21 Python
Python对小数进行除法运算的正确方法示例
2014/08/25 Python
python使用cStringIO实现临时内存文件访问的方法
2015/03/26 Python
Python文件处理
2016/02/29 Python
Python实现按特定格式对文件进行读写的方法示例
2017/11/30 Python
Python中最好用的命令行参数解析工具(argparse)
2019/08/23 Python
Keras实现支持masking的Flatten层代码
2020/06/16 Python
HTML5制作3D爱心动画教程 献给女友浪漫的礼物
2014/11/05 HTML / CSS
医护人员英文求职信范文
2013/11/26 职场文书
生产车间班组长岗位职责
2014/01/06 职场文书
高三自我评价
2014/02/01 职场文书
公司开业庆典主持词
2014/03/21 职场文书
社区务虚会发言材料
2014/10/20 职场文书
网络管理员岗位职责
2015/02/12 职场文书
2016年党员创先争优承诺书
2016/03/25 职场文书
悬疑名作《朋友游戏》动画无字ED宣传片 新角色公开
2022/04/13 日漫