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 30 Python
详解Python编程中对Monkey Patch猴子补丁开发方式的运用
May 27 Python
HTML中使用python屏蔽一些基本功能的方法
Jul 07 Python
python实现人脸识别代码
Nov 08 Python
TensorFlow实现卷积神经网络
May 24 Python
Django使用paginator插件实现翻页功能的实例
Oct 24 Python
对numpy中的where方法嵌套使用详解
Oct 31 Python
python 实现提取某个索引中某个时间段的数据方法
Feb 01 Python
详解Python用三种方式统计词频的方法
Jul 29 Python
python 魔法函数实例及解析
Sep 25 Python
Python API 操作Hadoop hdfs详解
Jun 06 Python
Python数据模型与Python对象模型的相关总结
Jan 26 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
Laravel框架下载,安装及路由操作图文详解
2019/12/04 PHP
JS 对象介绍
2010/01/20 Javascript
纯文字版返回顶端的js代码
2013/08/01 Javascript
JQuery页面的表格数据的增加与分页的实现
2013/12/10 Javascript
[将免费进行到底]在Amazon的一年免费服务器上安装Node.JS, NPM和OurJS博客
2014/08/18 Javascript
jQuery中next()方法用法实例
2015/01/07 Javascript
jQuery中animate用法实例分析
2015/03/09 Javascript
jQuery删除一个元素后淡出效果展示删除过程的方法
2015/03/18 Javascript
详细谈谈javascript的对象
2016/07/31 Javascript
js html5 css俄罗斯方块游戏再现
2016/10/17 Javascript
javascript正则表达式模糊匹配IP地址功能示例
2017/01/06 Javascript
node.js实现复制文本到剪切板的功能
2017/01/23 Javascript
Vue 进入/离开动画效果
2017/12/26 Javascript
vue 项目常用加载器及配置详解
2018/01/22 Javascript
基于Angularjs-router动态改变Title值的问题
2018/08/30 Javascript
JS实现的tab页切换效果完整示例
2018/12/18 Javascript
JS实现根据详细地址获取经纬度功能示例
2019/04/16 Javascript
通过扫小程序码实现网站登陆功能
2019/08/22 Javascript
Node.js API详解之 os模块用法实例分析
2020/05/06 Javascript
[00:30]塑造者的传承礼包-戴泽“暗影之焰”套装展示视频
2014/04/04 DOTA
[04:09]2018年度DOTA2社区贡献奖-完美盛典
2018/12/16 DOTA
python解析发往本机的数据包示例 (解析数据包)
2014/01/16 Python
Python实现的一个找零钱的小程序代码分享
2014/08/25 Python
使用Python编写简单网络爬虫抓取视频下载资源
2014/11/04 Python
python中字典(Dictionary)用法实例详解
2015/05/30 Python
使用Python导出Excel图表以及导出为图片的方法
2015/11/07 Python
Python使用ntplib库同步校准当地时间的方法
2016/07/02 Python
利用python打印出菱形、三角形以及矩形的方法实例
2017/08/08 Python
Python文件操作之合并文本文件内容示例代码
2017/09/19 Python
Python实现OpenCV的安装与使用示例
2018/03/30 Python
Python中文编码知识点
2019/02/18 Python
HTML5中的新元素介绍
2008/10/17 HTML / CSS
html5 迷宫游戏(碰撞检测)实例一
2013/07/25 HTML / CSS
HTML5轻松实现全屏视频背景的示例
2018/04/23 HTML / CSS
ALDO英国官网:加拿大女鞋品牌
2018/02/19 全球购物
文秘专业大学生求职信
2013/11/10 职场文书