Python的numpy库中将矩阵转换为列表等函数的方法


Posted in Python onApril 04, 2018

这篇文章主要介绍Python的numpy库中的一些函数,做备份,以便查找。

(1)将矩阵转换为列表的函数:numpy.matrix.tolist()

返回list列表

Examples

>>>

>>> x = np.matrix(np.arange(12).reshape((3,4))); x
matrix([[ 0, 1, 2, 3],
  [ 4, 5, 6, 7],
  [ 8, 9, 10, 11]])
>>> x.tolist()
[[0, 1, 2, 3], [4, 5, 6, 7], [8, 9, 10, 11]]

(2)将数组转换为列表的函数:numpy.ndarray.tolist()

Notes:(数组能够被重新构造)

The array may be recreated, a=np.array(a.tolist()).

Examples

>>>

>>> a = np.array([1, 2])
>>> a.tolist()
[1, 2]
>>> a = np.array([[1, 2], [3, 4]])
>>> list(a)
[array([1, 2]), array([3, 4])]
>>> a.tolist()
[[1, 2], [3, 4]]

(3)numpy.mean()计算矩阵或数组的均值:

Examples

>>>

>>> a = np.array([[1, 2], [3, 4]]) #对所有元素求均值
>>> np.mean(a)
2.5
>>> np.mean(a, axis=0) #对每一列求均值
array([ 2., 3.])
>>> np.mean(a, axis=1) #对每一行求均值
array([ 1.5, 3.5])

(4)numpy.std()计算矩阵或数组的标准差:

Examples

>>>

>>> a = np.array([[1, 2], [3, 4]]) #对所有元素求标准差 
>>> np.std(a)
1.1180339887498949
>>> np.std(a, axis=0) #对每一列求标准差
array([ 1., 1.])
>>> np.std(a, axis=1) #对每一行求标准差
array([ 0.5, 0.5])

(5)numpy.newaxis为数组增加一个维度:

Examples:

>>> a=np.array([[1,2,3],[4,5,6],[7,8,9]]) #先输入3行2列的数组a
>>> b=a[:,:2] 
>>> b.shape #当数组的行与列都大于1时,不需增加维度
(3, 2)
>>> c=a[:,2] 
>>> c.shape #可以看到,当数组只有一列时,缺少列的维度
(3,)
>>> c
array([3, 6, 9])
>>> d=a[:,2,np.newaxis] #np.newaxis实现增加列的维度
>>> d
array([[3],
  [6],
  [9]])
>>> d.shape  #d的维度成了3行1列(3,1)
(3, 1)
>>> e=a[:,2,None] #None与np.newaxis实现相同的功能
>>> e
array([[3],
  [6],
  [9]])
>>> e.shape
(3, 1)

(6)numpy.random.shuffle(index): 打乱数据集(数组)的顺序:

Examples:

>>> index = [i for i in range(10)] 
>>> index 
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 
>>> np.random.shuffle(index) 
>>> index 
[7, 9, 3, 0, 4, 1, 5, 2, 8, 6]

(7)计算二维数组某一行或某一列的最大值最小值:

>>> import numpy as np 
>>> a = np.arange(15).reshape(5,3) #构造一个5行3列的二维数组 
>>> a 
array([[ 0, 1, 2], 
  [ 3, 4, 5], 
  [ 6, 7, 8], 
  [ 9, 10, 11], 
  [12, 13, 14]]) 
>>> b = a[:,0].min() ##取第0列的最小值,其他列同理 
>>> b 
0 
>>> c = a[0,:].max() ##取第0行的最大值,其他行同理 
>>> c 
2

(8)向数组中添加列:np.hstack()

n = np.array(np.random.randn(4,2)) 
 
n 
Out[153]: 
array([[ 0.17234 , -0.01480043], 
  [-0.33356669, -1.33565616], 
  [-1.11680009, 0.64230761], 
  [-0.51233174, -0.10359941]]) 
 
l = np.array([1,2,3,4]) 
 
l 
Out[155]: array([1, 2, 3, 4]) 
 
l.shape 
Out[156]: (4,)

可以看到,n是二维的,l是一维的,如果直接调用np.hstack()会出错:维度不同。

n = np.hstack((n,l)) 
ValueError: all the input arrays must have same number of dimensions

解决方法是将l变为二维的,可以用(5)中的方法:

n = np.hstack((n,l[:,np.newaxis])) ##注意:在使用np.hstack()时必须用()把变量括起来,因为它只接受一个变量 
 
n 
Out[161]: 
array([[ 0.17234 , -0.01480043, 1.  ], 
  [-0.33356669, -1.33565616, 2.  ], 
  [-1.11680009, 0.64230761, 3.  ], 
  [-0.51233174, -0.10359941, 4.  ]])

下面讲一下如何按列往一个空列表添加值:

n = np.array([[1,2,3,4,5,6],[11,22,33,44,55,66],[111,222,333,444,555,666]]) ##产生一个三行六列容易区分的数组 
 
n 
Out[166]: 
array([[ 1, 2, 3, 4, 5, 6], 
  [ 11, 22, 33, 44, 55, 66], 
  [111, 222, 333, 444, 555, 666]]) 
 
sample = [[]for i in range(3)] ##产生三行一列的空列表 
Out[172]: [[], [], []] 
for i in range(0,6,2): ##每间隔一列便添加到sample中 
 sample = np.hstack((sample,n[:,i,np.newaxis]))  
  
 
sample 
Out[170]: 
array([[ 1., 3., 5.], 
  [ 11., 33., 55.], 
  [ 111., 333., 555.]])

持续更新中……

以上这篇Python的numpy库中将矩阵转换为列表等函数的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Django静态资源URL STATIC_ROOT的配置方法
Nov 08 Python
教你用Type Hint提高Python程序开发效率
Aug 08 Python
利用python获取当前日期前后N天或N月日期的方法示例
Jul 30 Python
使用python实现knn算法
Dec 20 Python
django session完成状态保持的方法
Nov 27 Python
Django之路由层的实现
Sep 09 Python
Python numpy.zero() 初始化矩阵实例
Nov 27 Python
python生成13位或16位时间戳以及反向解析时间戳的实例
Mar 03 Python
Python内建序列通用操作6种实现方法
Mar 26 Python
python实现密码验证合格程序的思路详解
Jun 01 Python
python读取hdfs上的parquet文件方式
Jun 06 Python
浅谈keras使用预训练模型vgg16分类,损失和准确度不变
Jul 02 Python
python 列表,数组,矩阵两两转换tolist()的实例
Apr 04 #Python
使用Python设计一个代码统计工具
Apr 04 #Python
用 Python 连接 MySQL 的几种方式详解
Apr 04 #Python
Python基于辗转相除法求解最大公约数的方法示例
Apr 04 #Python
对numpy中数组元素的统一赋值实例
Apr 04 #Python
Python 元类实例解析
Apr 04 #Python
对numpy 数组和矩阵的乘法的进一步理解
Apr 04 #Python
You might like
Access数据库导入Mysql的方法之一
2006/10/09 PHP
php 时间计算问题小结
2009/01/04 PHP
解析isset与is_null的区别
2013/08/09 PHP
Zend Framework教程之Resource Autoloading用法实例
2016/03/08 PHP
laravel ORM 只开启created_at的几种方法总结
2018/01/29 PHP
JQuery中使用Ajax赋值给全局变量异常的解决方法
2014/01/10 Javascript
js生成随机数的方法实例
2015/10/16 Javascript
Jquery uploadify上传插件使用详解
2016/01/13 Javascript
详解支持Angular 2的表格控件
2017/01/19 Javascript
关于Vue的路由权限管理的示例代码
2018/03/06 Javascript
vue-router传递参数的几种方式实例详解
2018/11/13 Javascript
微信小程序城市选择及搜索功能的方法
2019/03/22 Javascript
微信小程序手动添加收货地址省市区联动
2020/05/18 Javascript
antd 表格列宽自适应方法以及错误处理操作
2020/10/27 Javascript
JavaScript实现鼠标移入随机变换颜色
2020/11/24 Javascript
Python打造出适合自己的定制化Eclipse IDE
2016/03/02 Python
在CentOS上配置Nginx+Gunicorn+Python+Flask环境的教程
2016/06/07 Python
SVM基本概念及Python实现代码
2017/12/27 Python
Python制作词云的方法
2018/01/03 Python
python复制列表时[:]和[::]之间有什么区别
2018/10/16 Python
Django项目之Elasticsearch搜索引擎的实例
2019/08/21 Python
python 实现多维数组转向量
2019/11/30 Python
Python连接Hadoop数据中遇到的各种坑(汇总)
2020/04/14 Python
css3实现3D文本悬停改变效果的示例代码
2019/01/16 HTML / CSS
德国专业木制品经销商:Holz-Direkt24
2019/12/26 全球购物
法国在线药房:DoctiPharma
2020/10/21 全球购物
工商管理专业实习大学生自我鉴定
2013/09/19 职场文书
大学生年度自我鉴定
2013/10/31 职场文书
扩大国家免疫规划实施方案
2014/03/21 职场文书
教师党员承诺书
2014/03/25 职场文书
安全隐患整改报告
2014/11/06 职场文书
五星级酒店前台接待岗位职责
2015/04/02 职场文书
物业保安辞职信
2015/05/12 职场文书
商务宴会祝酒词
2015/08/11 职场文书
《我是什么》教学反思
2016/02/16 职场文书
Python 装饰器(decorator)常用的创建方式及解析
2022/04/24 Python