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

来源:互联网 发布:mac 终端翻墙 编辑:程序博客网 时间:2024/06/07 07:18

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

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

返回list列表

Examples

>>>
>>> x = np.matrix(np.arange(12).reshape((3,4))); xmatrix([[ 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:

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

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

Examples:

[python] view plain copy
  1. >>> index = [i for i in range(10)]  
  2. >>> index  
  3. [0123456789]  
  4. >>> np.random.shuffle(index)  
  5. >>> index  
  6. [7930415286]  

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

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

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

[python] view plain copy
  1. n = np.array(np.random.randn(4,2))  
  2.   
  3. n  
  4. Out[153]:   
  5. array([[ 0.17234   , -0.01480043],  
  6.        [-0.33356669, -1.33565616],  
  7.        [-1.11680009,  0.64230761],  
  8.        [-0.51233174, -0.10359941]])  
  9.   
  10. l = np.array([1,2,3,4])  
  11.   
  12. l  
  13. Out[155]: array([1234])  
  14.   
  15. l.shape  
  16. Out[156]: (4,)  

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

[python] view plain copy
  1. n = np.hstack((n,l))  
  2. ValueError: all the input arrays must have same number of dimensions  
解决方法是将l变为二维的,可以用(5)中的方法:

[python] view plain copy
  1. n = np.hstack((n,l[:,np.newaxis]))   ##注意:在使用np.hstack()时必须用()把变量括起来,因为它只接受一个变量  
  2.   
  3. n  
  4. Out[161]:   
  5. array([[ 0.17234   , -0.01480043,  1.        ],  
  6.        [-0.33356669, -1.33565616,  2.        ],  
  7.        [-1.11680009,  0.64230761,  3.        ],  
  8.        [-0.51233174, -0.10359941,  4.        ]])  
下面讲一下如何按列往一个空列表添加值:

[python] view plain copy
  1. n = np.array([[1,2,3,4,5,6],[11,22,33,44,55,66],[111,222,333,444,555,666]])   ##产生一个三行六列容易区分的数组  
  2.   
  3. n  
  4. Out[166]:   
  5. array([[  1,   2,   3,   4,   5,   6],  
  6.        [ 11,  22,  33,  44,  55,  66],  
  7.        [111222333444555666]])  
  8.   
  9. sample = [[]for i in range(3)]  ##产生三行一列的空列表  
  10. Out[172]: [[], [], []]    
  11. for i in range(0,6,2):   ##每间隔一列便添加到sample中  
  12.     sample = np.hstack((sample,n[:,i,np.newaxis]))      
  13.       
  14.   
  15. sample  
  16. Out[170]:   
  17. array([[   1.,    3.,    5.],  
  18.        [  11.,   33.,   55.],  
  19.        [ 111.,  333.,  555.]])  

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 不小心吃了虫卵怎么办 孕妇做四维宝宝不配合怎么办 孕妇四维小孩不配合怎么办 孕妇吃了甜酒酿怎么办 屁股疼的不能动怎么办 小孩打针后手臂疼痛怎么办 屁股打针的地方疼怎么办 眼底坏了怎么办怎么治 大疆无人机飞丢了怎么办 两岁半宝宝发热灌肠后便秘怎么办 发烧灌肠后一直拉稀怎么办 孩子便秘用开塞露引起肚子疼怎么办 老人大便干燥拉不出来怎么办 海底捞排队过号怎么办 脱毛后吃了海鲜怎么办 脂肪填充变丑了怎么办 全切双眼皮伤口长包怎么办 鼻综合修复眼中心修太宽怎么办 fgo的id忘了怎么办 电脑下载模拟器显示内存不够怎么办 安逍遥模拟器运行一段时间卡怎么办 pos机微信支付签到失败怎么办 逆水寒fps过低怎么办 电脑卡怎么办怎么清理磁盘 苹果手机设置找不到了怎么办 苹果手机自动拨出电话怎么办 机械键盘灯坏了怎么办 黄金塔花叶子卷怎么办 办的宽带不用了怎么办 取卵后3天还出血怎么办 取卵后腹水怎么办9天了 取卵后第三天肚子涨第天移植怎么办 取卵移植后肚子涨怎么办 没有成熟的卵泡不排卵怎么办 产后9年妊娠纹痒怎么办 手机屏幕锁了忘记密码怎么办 电脑被黑客锁屏怎么办 r9解锁密码忘了怎么办 oppor9开机密码忘了怎么办 vivo手机忘记解锁图案怎么办 oppor9s解锁图案忘了怎么办