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中用Decorator来简化元编程的教程
Apr 13 Python
Tensorflow简单验证码识别应用
May 25 Python
Python编程实现正则删除命令功能
Aug 30 Python
轻松实现TensorFlow微信跳一跳的AI
Jan 05 Python
Python实现的拟合二元一次函数功能示例【基于scipy模块】
May 15 Python
python 实现视频流下载保存MP4的方法
Jan 09 Python
由Python编写的MySQL管理工具代码实例
Apr 09 Python
python清空命令行方式
Jan 13 Python
Python xpath表达式如何实现数据处理
Jun 13 Python
python中PyQuery库用法分享
Jan 15 Python
python内置进制转换函数的操作
Jun 02 Python
自动在Windows中运行Python脚本并定时触发功能实现
Sep 04 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内存缓存Memcached类实例
2014/12/08 PHP
10个超级有用的PHP代码片段果断收藏
2015/09/23 PHP
PHP7标量类型declare用法实例分析
2016/09/26 PHP
PHP实现的文件上传类与用法详解
2017/07/05 PHP
在Laravel中实现使用AJAX动态刷新部分页面
2019/10/15 PHP
Javascript学习笔记一 之 数据类型
2010/12/15 Javascript
js监听输入框值的即时变化onpropertychange、oninput
2011/07/13 Javascript
js 动态修改css文件用到了cssRule
2014/08/20 Javascript
原生javascript实现Tab选项卡切换功能
2015/01/12 Javascript
给angular加上动画效遇到的问题总结
2016/02/17 Javascript
javascript 数据存储的常用函数总结
2017/06/01 Javascript
Vue的土著指令和自定义指令实例详解
2018/02/04 Javascript
微信小程序实现发微博功能的示例代码
2020/06/24 Javascript
python3.4用循环往mysql5.7中写数据并输出的实现方法
2017/06/20 Python
Python实现k-means算法
2018/02/23 Python
Opencv-Python图像透视变换cv2.warpPerspective的示例
2019/04/11 Python
python opencv 批量改变图片的尺寸大小的方法
2019/06/28 Python
python写入数据到csv或xlsx文件的3种方法
2019/08/23 Python
Django实现网页分页功能
2019/10/31 Python
纯DOM+CSS3实现简单的小风车动画
2016/09/27 HTML / CSS
css3新增颜色表示方式分享
2014/04/15 HTML / CSS
使用phonegap获取设备的一些信息方法
2017/03/31 HTML / CSS
为中国消费者甄选天下优品:网易严选
2016/08/11 全球购物
Java中有几种方法可以实现一个线程?用什么关键字修饰同步方法?stop()和suspend()方法为何不推荐使用?
2015/08/04 面试题
大学生实习期自我评价范文
2013/10/03 职场文书
肯尼迪就职演说稿
2013/12/31 职场文书
致1500米运动员广播稿
2014/02/07 职场文书
企业员工培训感言
2014/02/26 职场文书
解除劳动合同协议书范本
2014/04/14 职场文书
高中课前三分钟演讲稿
2014/08/18 职场文书
护士求职自荐信范文
2015/03/04 职场文书
法院答辩状格式
2015/05/22 职场文书
教师节祝酒词
2015/08/11 职场文书
详解vue中v-for的key唯一性
2021/05/15 Vue.js
浅谈MySQL之select优化方案
2021/08/07 MySQL
使用CSS自定义属性实现骨架屏效果
2022/06/21 HTML / CSS