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 相关文章推荐
Python中的字符串操作和编码Unicode详解
Jan 18 Python
深入理解python中的atexit模块
Mar 07 Python
Python编程给numpy矩阵添加一列方法示例
Dec 04 Python
python3.X 抓取火车票信息【修正版】
Jun 19 Python
Python数据可视化库seaborn的使用总结
Jan 15 Python
python打开使用的方法
Sep 30 Python
Django将默认的SQLite更换为MySQL的实现
Nov 18 Python
python 控制台单行刷新,多行刷新实例
Feb 19 Python
python GUI库图形界面开发之PyQt5切换按钮控件QPushButton详细使用方法与实例
Feb 28 Python
浅谈Django QuerySet对象(模型.objects)的常用方法
Mar 28 Python
在Django中自定义filter并在template中的使用详解
May 19 Python
浅谈pymysql查询语句中带有in时传递参数的问题
Jun 05 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
PHP chmod 函数与批量修改文件目录权限
2010/05/10 PHP
探讨:如何通过stats命令分析Memcached的内部状态
2013/06/14 PHP
thinkPHP5.0框架API优化后的友好性分析
2017/03/17 PHP
页面元素绑定jquery toggle后元素隐藏的解决方法
2014/03/27 Javascript
同一个网页中实现多个JavaScript特效的方法
2015/02/02 Javascript
原生js制作简单的数字键盘
2015/04/24 Javascript
jQuery图片旋转插件jQueryRotate.js用法实例(附demo下载)
2016/01/21 Javascript
深入分析Javascript事件代理
2016/01/30 Javascript
jQuery的promise与deferred对象在异步回调中的作用
2016/05/03 Javascript
Select2.js下拉框使用小结
2016/10/24 Javascript
Node.js利用console输出日志文件的方法示例
2018/04/27 Javascript
Vue 组件传值几种常用方法【总结】
2018/05/28 Javascript
用npm安装vue和vue-cli,并使用webpack创建项目的方法
2018/09/28 Javascript
10种JavaScript最常见的错误(小结)
2019/06/21 Javascript
微信小程序实现蓝牙打印
2019/09/23 Javascript
nuxt 页面路由配置,主页轮播组件开发操作
2020/11/05 Javascript
[49:43]VG vs FNATIC 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
[03:12]完美世界DOTA2联赛PWL DAY7集锦
2020/11/06 DOTA
python装饰器与递归算法详解
2016/02/18 Python
Python OpenCV去除字母后面的杂线操作
2020/07/05 Python
利用CSS3的线性渐变linear-gradient制作边框的示例
2016/06/02 HTML / CSS
HTML高亮关键字的实现代码
2018/10/22 HTML / CSS
做一个能自适应高度的textarea的示例代码
2019/09/06 HTML / CSS
Nobody Denim官网:购买高级女士牛仔裤
2021/03/15 全球购物
编写一子程序,将一链表倒序,即使链表表尾变表头,表头变表尾
2016/02/10 面试题
电子信息专业自荐书
2014/02/04 职场文书
会计电算化毕业生自荐信
2014/03/03 职场文书
校园学雷锋活动月总结
2014/03/09 职场文书
食品采购员岗位职责
2014/04/14 职场文书
节约用水的口号
2014/06/20 职场文书
超市理货员岗位职责
2014/07/04 职场文书
2015年前台个人工作总结
2015/04/03 职场文书
2015年社区居委会工作总结
2015/05/18 职场文书
个人更名证明
2015/06/23 职场文书
为什么阅读对所有年龄段的孩子都很重要?
2019/07/08 职场文书
SQL Server #{}可以防止SQL注入
2022/05/11 SQL Server