02. 导数与梯度、矩阵运算性质、科学计算库numpy

一、数学基础
二、numpy
 
 
 
 
一、数学基础
关键字:求导、偏导、梯度、复合函数求导链式法则
             矩阵的转置、矩阵加减、矩阵乘法【矩阵乘法不满足交换律】
 
二、numpy
(1)转置和加、乘
#coding:utf-8
import numpy as np
print np.__version__
 
# 1- create narray
array = np.array([1,2,3],dtype=np.uint8)
print "array:",array
 
# 2- zeros
mat1 = np.zeros((2,3)) #(2,3) tuple
print "mat1:",mat1
 
# 3- 高维矩阵
mat2 = np.zeros((1,2,3,4))
print mat2.shape
print mat2.size
 
# 4- 标准矩阵运算
# (1) 标量与矩阵相乘
scalar = 2
mat = np.ones((2,3))
mat3 = scalar * mat
print "mat3:",mat3
# (2) 矩阵转置 mat.T
mat = np.zeros((2,3))
tmat = mat.T
print mat.shape,tmat.shape
mat4 = np.array((1,2,3))
print "mat4:",mat4
tmat4 = mat4.T
print mat4.shape,tmat4.shape
# (3) 矩阵的加法
print "add--------------------"
mat1 = np.array([[1,2],[3,4]])
mat2 = np.zeros((2,2))
mat3 = mat1 + mat2
print "mat3:",mat3
# (4) 矩阵的乘法
print "multi------------------"
mat1 = np.array([[1,2],[3,4]])
mat2 = np.ones((2,2))
mat3 = mat1.dot(mat2)
print "mat3:",mat3
 
(2)扩展运算
#coding:utf-8
import numpy as np
# 扩展运算
# (1) 对应元素相乘
mat1 = np.array([[1,2],[3,4]])
mat = mat1 * mat1
print "mat:",mat
 
# (2) 标量与矩阵相加
scalar = 2
mat1 = np.array([[1,2],[3,4]])
mat = scalar + mat1
print "mat:",mat
 
# (3) 高位矩阵维度改变
mat1 = np.zeros((1,2,3))
mat = mat1.transpose(0,2,1) # 维度调换
print mat1.shape,mat.shape
 
# (4) broad cast 拓宽操作。先对原来的向量拓宽,再做加法
mat1 = np.ones((3,4))
vec = np.array([[1],[2],[3]])
print mat1+vec
 
 
(2)杂项运算
 
#coding:utf-8
import numpy as np
 
# 杂项操作
# (1) 生成随机数
rannum = np.random.randn(2,3)
print "rannum:",rannum
# 生成一个指定尺寸的矩阵
# 矩阵中的所有数字符合正态分布(normal distribution)
met = [1,2,3]
np.random.shuffle(met)
print "shuffle_met:",met
 
# (2) 对矩阵元素求和
print np.sum(rannum)
 
# (3) numpy axis
print np.sum(rannum,axis = 0) # 列
print np.sum(rannum,axis = 1) # 行
 
# (4) e的指数
print np.exp(rannum)
 
# (5) 求最大下标
a=[3,1,2,3,545,23,23,243]
print np.argmax(a)

posted @ 2018-03-02 12:01  小七西西  阅读(337)  评论(0编辑  收藏  举报