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实现TCP服务器端与客户端的方法详解
Apr 30 Python
Python安装第三方库及常见问题处理方法汇总
Sep 13 Python
快速实现基于Python的微信聊天机器人示例代码
Mar 03 Python
Python Json序列化与反序列化的示例
Jan 31 Python
python 读文件,然后转化为矩阵的实例
Apr 23 Python
对python:循环定义多个变量的实例详解
Jan 20 Python
TensorFlow卷积神经网络之使用训练好的模型识别猫狗图片
Mar 14 Python
TensorFlow实现checkpoint文件转换为pb文件
Feb 10 Python
解决TensorFlow调用Keras库函数存在的问题
Jul 06 Python
python的flask框架难学吗
Jul 31 Python
Pycharm在指定目录下生成文件和删除文件的实现
Dec 28 Python
python实现批量移动文件
Apr 05 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定时任务延缓执行的实现
2014/10/08 PHP
php基于表单密码验证与HTTP验证用法实例
2015/01/06 PHP
php 参数过滤、数据过滤详解
2015/10/26 PHP
ThinkPHP框架实现的邮箱激活功能示例
2018/06/15 PHP
静态的动态续篇之来点XML
2006/12/23 Javascript
window.navigate 与 window.location.href 的使用区别介绍
2013/09/21 Javascript
JS实现的通用表单验证插件完整实例
2015/08/20 Javascript
jquery实现tab选项卡切换效果(悬停、下方横线动画位移)
2017/05/05 jQuery
Javascript实现信息滚动效果
2017/05/18 Javascript
ES6学习教程之块级作用域详解
2017/10/09 Javascript
Vue-cli-webpack搭建斗鱼直播步骤详解
2017/11/17 Javascript
移动前端图片压缩上传的实例
2017/12/06 Javascript
JavaScript实现的文本框placeholder提示文字功能示例
2018/07/25 Javascript
Mint UI组件库CheckList使用及踩坑总结
2018/12/20 Javascript
简单分析js中的this的原理
2019/08/31 Javascript
js实现一款简单踩白块小游戏(曾经很火)
2019/12/02 Javascript
jQuery HTML css()方法与css类实例详解
2020/05/20 jQuery
webpack+express实现文件精确缓存的示例代码
2020/06/11 Javascript
Python内置数据类型详解
2014/08/18 Python
Python 模块EasyGui详细介绍
2017/02/19 Python
HTML中使用python屏蔽一些基本功能的方法
2017/07/07 Python
深入浅析python with语句简介
2018/04/11 Python
使用python编写udp协议的ping程序方法
2018/04/22 Python
详解python3中tkinter知识点
2018/06/21 Python
python使用xlsxwriter实现有向无环图到Excel的转换
2018/12/12 Python
解决python 3 urllib 没有 urlencode 属性的问题
2019/08/22 Python
python 字典套字典或列表的示例
2019/12/16 Python
python环境下安装opencv库的方法
2020/03/05 Python
Python如何把字典写入到CSV文件的方法示例
2020/08/23 Python
介绍CSS3使用技巧5个
2009/04/02 HTML / CSS
阿玛尼美妆加拿大官方商城:Giorgio Armani Beauty加拿大
2017/10/24 全球购物
Elemental Herbology官网:英国美容品牌
2019/04/27 全球购物
新闻专业应届生求职信
2013/10/31 职场文书
贸易经济专业自荐书
2014/06/29 职场文书
公司内部升职自荐信
2015/03/27 职场文书
python面向对象版学生信息管理系统
2021/06/24 Python