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的Flask框架中web表单的教程
Apr 20 Python
linux下python抓屏实现方法
May 22 Python
python使用pymysql实现操作mysql
Sep 13 Python
Python中正则表达式详解
May 17 Python
查看TensorFlow checkpoint文件中的变量名和对应值方法
Jun 14 Python
python dataframe 输出结果整行显示的方法
Jun 14 Python
详解Django+Uwsgi+Nginx的生产环境部署
Jun 25 Python
python解压TAR文件至指定文件夹的实例
Jun 10 Python
关于Keras Dense层整理
May 21 Python
Python selenium使用autoIT上传附件过程详解
May 26 Python
Python 处理表格进行成绩排序的操作代码
Jul 26 Python
详解OpenCV获取高动态范围(HDR)成像
Apr 29 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实现约瑟夫问题的方法小结
2015/03/23 PHP
php中实现字符串翻转的方法
2017/02/22 PHP
Linux下快速搭建php开发环境
2017/03/13 PHP
PHP命名空间与自动加载类详解
2018/09/04 PHP
Laravel服务容器绑定的几种方法总结
2020/06/14 PHP
jquery $.ajax入门应用二
2008/11/19 Javascript
基于jquery的一个OutlookBar类,动态创建导航条
2010/11/19 Javascript
jquery插件制作 手风琴Panel效果实现
2012/08/17 Javascript
js 时间格式与时间戳的相互转换示例代码
2013/12/25 Javascript
验证码在IE中不刷新而谷歌等浏览器正常的解决方案
2014/03/18 Javascript
使用JS实现jQuery的addClass, removeClass, hasClass函数功能
2014/10/31 Javascript
高性能JavaScript DOM编程(1)
2015/08/11 Javascript
js限制文本框只能输入中文的方法
2015/08/11 Javascript
基于JavaScript实现移动端TAB触屏切换效果
2015/10/20 Javascript
不得不分享的JavaScript常用方法函数集(下)
2015/12/25 Javascript
js从外部获取图片的实现方法
2016/08/05 Javascript
vue2滚动条加载更多数据实现代码
2017/01/10 Javascript
百度地图JavascriptApi Marker平滑移动及车头指向行径方向
2017/03/13 Javascript
JavaScript简介_动力节点Java学院整理
2017/06/26 Javascript
深入理解jquery的$.extend()、$.fn和$.fn.extend()
2017/07/08 jQuery
微信小程序左滑动显示菜单功能的实现
2018/06/14 Javascript
JS开发自己的类库实例分析
2019/08/28 Javascript
Nuxt.js实现一个SSR的前端博客的示例代码
2019/09/06 Javascript
在vue项目中 实现定义全局变量 全局函数操作
2020/10/26 Javascript
[01:04:06]DOTA2上海特级锦标赛A组资格赛#2 Secret VS EHOME第一局
2016/02/26 DOTA
py中的目录与文件判别代码
2008/07/16 Python
django模型中的字段和model名显示为中文小技巧分享
2014/11/18 Python
Python中修改字符串的四种方法
2018/11/02 Python
scrapy数据存储在mysql数据库的两种方式(同步和异步)
2020/02/18 Python
Python dict的常用方法示例代码
2020/06/23 Python
20行Python代码实现一款永久免费PDF编辑工具的实现
2020/08/27 Python
jupyter notebook指定启动目录的方法
2021/03/02 Python
Html5 localStorage入门教程
2018/04/26 HTML / CSS
关于安全的广播稿
2014/10/23 职场文书
违反纪律检讨书范文
2015/05/07 职场文书
制作能在nginx和IIS中使用的ssl证书
2021/06/21 Servers