您的位置:首页 > 编程语言 > Python开发

机器学习--准备数据与Numpy(六)--准备数据与Numpy之矩阵运算

2018-02-04 22:58 363 查看

线性代数

常用的numpy.linalg函数

类型说明
diag以一维数组的形式返回方阵的对角线(或非对角线元素),获将一维数组转换
为方阵(非对角线元素为0)。
dot矩阵乘法
trace计算对角线元素的和
det计算矩阵行列式
eig计算方阵的特征值和特征向量
inv计算方阵的逆
  
类型说明
pinv计算矩阵的Moore-Penrose伪逆
qr计算QR分解
svd计算奇异值分解
solve解线性方程Ax = b,其中A为一个方阵。
lstsq计算Ax = b的最小二乘解
# -*- coding: utf-8 -*-
# TODO: http://docs.scipy.org/doc/numpy/reference/generated/numpy.linalg.qr.html q代表什么矩阵?
import numpy as np
import numpy.random as np_random
from numpy.linalg import inv, qr

print('矩阵乘法')
x = np.array([[1., 1., 1.], [1., 1., 1.]])
y = np.array([[1., 1.], [-1, 1], [1, 1]])
#.dot()即点乘,向量的内积。两个矩阵相乘Ax*n和Bn*y得到Cx*y。
print(x.dot(y))
#np.ones()单位矩阵
print(np.ones(3))
print(np.dot(x, np.ones(3)))
x = np_random.randint(2,size=(2, 2))
print(x)

print('矩阵求逆')
#矩阵必须为方阵,且行列式不为0
mat = x.T.dot(x)#生成一个方阵
matdet = np.linalg.det(mat)
print("行列式值为",matdet)
if 0.0 != matdet :
print(inv(mat))# 矩阵求逆,前提行列式不为0
print(mat.dot(inv(mat))) # 与逆矩阵相乘,得到单位矩阵。

print('矩阵消元QR分解')
#如果实(复)非奇异矩阵A能够化成正交(酉)矩阵Q与实(复)非奇异上三角矩阵R的乘积,即A=QR,则称其为A的QR分解。
print(mat)
q, r = qr(mat)
print(q)
pri
4000
nt(r)

矩阵乘法
[[ 1.  3.]
[ 1.  3.]]
[ 1.  1.  1.]
[ 3.  3.]
[[1 0]
[1 1]]
矩阵求逆
行列式值为 1.0
[[ 1. -1.]
[-1.  2.]]
[[ 1.  0.]
[ 0.  1.]]
矩阵消元QR分解
[[2 1]
[1 1]]
[[-0.89442719 -0.4472136 ]
[-0.4472136   0.89442719]]
[[-2.23606798 -1.34164079]
[ 0.          0.4472136 ]]

随机数生成

部分numpy.random函数 I

类型说明
seed确定随机数生成器的种子
permutation返回一个序列的随机排列或返回一个随机排列的返回
shuffle对一个序列就地随机乱序
rand产生均匀分布的样本值
randint从给定的上下限范围内随机选取整数
randn产生正态分布(平均值为0,标准差为1)
binomial产生二项分布的样本值

部分numpy.random函数 II

类型说明
normal产生正态(高斯)分布的样本值
beta产生Beta分布的样本值
chisquare产生卡方分布的样本值
gamma产Gamma分布的样本值
uniform产生在[0, 1]中均匀分布的样本值
# -*- coding: utf-8 -*-

import numpy as np
import numpy.random as np_random
from random import normalvariate

print('正态分布随机数')
samples = np.random.normal(size=(4, 4))
print(samples)

print('批量按正态分布生成0到1的随机数')
N = 10
print([normalvariate(0, 1) for _ in xrange(N)])
print(np.random.normal(size = N))  # 与上面代码等价
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: