码迷,mamicode.com
首页 > 编程语言 > 详细

《机器学习算法原理与编程实践》学习笔记(二)

时间:2016-12-25 01:57:34      阅读:341      评论:0      收藏:0      [点我收藏+]

标签:nec   gpu   pow   3.5   pydev   广播   理解   div   style   

(上接第一章)

1.2 对象、矩阵与矢量化编程

1.2.1对象与维度(略)

1.2.2初识矩阵(略)

1.2.3矢量化编程与GPU运算(略)

1.2.4理解数学公式与NumPy矩阵运算

1.矩阵的初始化

#coding:utf-8
import numpy as np #导入NumPy包
#创建3*5的全0矩阵和全1的矩阵
myZero = np.zeros([3,5])#3*5的全0矩阵
print myZero
myZero = np.ones([3,5])##3*5的全1矩阵
print myZero

输出结果:

Connected to pydev debugger (build 141.1580)
[[ 0.  0.  0.  0.  0.]
 [ 0.  0.  0.  0.  0.]
 [ 0.  0.  0.  0.  0.]]
[[ 1.  1.  1.  1.  1.]
 [ 1.  1.  1.  1.  1.]
 [ 1.  1.  1.  1.  1.]]
#生成随机矩阵
myRand = np.random.rand(3,4)#3行4列的0~1之间的随机数矩阵
print myRand
输出结果如下:
[[ 0.14689327  0.15077077  0.88018968  0.75112348]
 [ 0.30944489  0.77563281  0.82905038  0.25430367]
 [ 0.53958541  0.89695376  0.90681161  0.25453046]]
#单位阵
myEye = np.eye(3)#3*3的矩阵
print myEye
输出结果如下:
[[ 1.  0.  0.]
 [ 0.  1.  0.]
 [ 0.  0.  1.]]

2.矩阵的元素运算

矩阵的元素运算是指矩阵在元素级别的加减乘除运算。

#元素的加和减:条件是矩阵的行数和列数必须相同
from numpy import *#导入NumPy包
myOnes = ones([3,3])#3*3的全1矩阵
myEye  = eye(3print myOnes+myEye
print  myOnes-myEye
输出结果如下:
[[ 2.  1.  1.]
 [ 1.  2.  1.]
 [ 1.  1.  2.]]
[[ 0.  1.  1.]
 [ 1.  0.  1.]
 [ 1.  1.  0.]]
#矩阵乘法
mymatrix = mat([[1,2,3],[4,5,6],[7,8,9]])
a = 10
print a*mymatrix
输出结果:
[[10 20 30]
 [40 50 60]
 [70 80 90]]
#矩阵所有元素求和
mymatrix = mat([[1,2,3],[4,5,6],[7,8,9]])
print mymatrix.sum()
输出结果:
45
‘‘‘
矩阵各元素的积:矩阵的点乘同维对应元素的相乘。
当矩阵的维度不同时,会根据一定的广播将维数扩
充到一致的形式
‘‘‘
mymatrix1 = mat([[1,2,3],[4,5,6],[7,8,9]])
mymatrix2 = 1.5*ones([3,3])
print multiply(mymatrix1,mymatrix2)
输出结果:
[[  1.5   3.    4.5]
 [  6.    7.5   9. ]
 [ 10.5  12.   13.5]]
#矩阵各元素的n次幂:n=2
mymatrix1 = mat([[1,2,3],[4,5,6],[7,8,9]])
print power(mymatrix1,2)
输出结果:
[[ 1  4  9]
 [16 25 36]
 [49 64 81]]
#矩阵乘以矩阵
mymatrix1 = mat([[1,2,3],[4,5,6],[7,8,9]])
mymatrix2 = mat([[1],[2],[3]])
print mymatrix1*mymatrix2
输出结果:
[[14]
 [32]
 [50]]

 

#矩阵的转置
mymatrix1 = mat([[1,2,3],[4,5,6],[7,8,9]])
print mymatrix1.T    #矩阵的转置
mymatrix1.transpose() #矩阵的转置
print  mymatrix1
输出结果如下:
[[1 4 7]
 [2 5 8]
 [3 6 9]]
[[1 2 3]
 [4 5 6]
 [7 8 9]]
mymatrix = mymatrix1[0]#按行切片
print u"按行切片:",mymatrix
mymatrix = mymatrix1.T[0]#按列切片
print u"按列切片:",mymatrix
mymatrix = mymatrix1.copy()#矩阵的复制
print u"复制矩阵:",mymatrix
#比较
print u"矩阵元素的比较:\n",mymatrix<mymatrix1.T
输出结果:
矩阵的行数和列数: 3 3
按行切片: [[1 2 3]]
按列切片: [[1 4 7]]
复制矩阵: [[1 2 3]
 [4 5 6]
 [7 8 9]]
矩阵元素的比较:
[[False  True  True]
 [False False  True]
 [False False False]]

资料来源:《机器学习算法原理与编程实践》郑捷

 

《机器学习算法原理与编程实践》学习笔记(二)

标签:nec   gpu   pow   3.5   pydev   广播   理解   div   style   

原文地址:http://www.cnblogs.com/wuchuanying/p/6218815.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!