首页 > 其他 > 详细

numpy基础4线性代数等

时间:2019-07-26 20:49:27      阅读:118      评论:0      收藏:0      [点我收藏+]
 1 # coding: utf-8
 2 # 线性代数
 3 
 4 # numpy的线性代数中* 是矩阵的逐元素乘积,不是矩阵的点乘积
 5 import numpy as np
 6 x = np.array([[1., 2., 3.], [4., 5., 6.]])
 7 y = np.array([[6., 23], [-1, 7], [8, 9]])
 8 x.dot(y)
 9 
10 # 一个二维数组和一个长度合适的一维数组之间的矩阵乘积,其结果是一个一维数组
11 np.dot(x, np.ones(3))
12 
13 # 特殊符号@ 作为中缀操作符,用于点乘积矩阵操作
14 x @ np.ones(3)
15 
16 # 矩阵分解的标准函数集 np.linalg
17 from numpy.linalg import inv, qr
18 X = np.random.randn(5, 5)
19 mat = X.T.dot(X) #X.T.dot(X)是计算X和它的转置矩阵X.T的点乘积。
20 inv(mat)
21 mat.dot(inv(mat))
22 q, r = qr(mat)
23 r
24 
25 #  伪随机数生成
26 # 生成正态分布样本数组
27 samples = np.random.normal(size=(4, 4))
28 samples
29 
30 #示例:随机漫步
31 
32 import matplotlib.pyplot as plt
33 import random
34 position = 0
35 walk = [position]
36 steps = 1000
37 for i in range(steps):
38     step = 1 if random.randint(0, 1) else -1
39     position += step
40     walk.append(position)
41 
42 plt.plot(walk[:100])
43 
44 #  一次性模拟多次随机漫步
45 nwalks = 5000
46 nsteps = 1000
47 draws = np.random.randint(0, 2, size=(nwalks, nsteps))
48 steps = np.where(draws > 0, 1, -1)
49 walks = steps.cumsum(1)
50 walks
51 
52 #计算随机漫步最大值最小值
53 walks.max()
54 walks.min()
55 
56 # 在这些随机漫步中计算出30或-30的最小穿越时间
57 hist30 = (np.abs(walks) >= 30).any(1)
58 hist30
59 hist30.sum()
60 
61 # 使用布尔值数组来选出绝对步数超过30的步所在的行,并使用argmax从轴向1上获取穿越时间
62 crossing_times = (np.abs(walks[hist30]) >= 30).argmax(1)
63 crossing_times.mean()

参考书籍:利用 python 进行数据分析

作者:舟华520

出处:https://www.cnblogs.com/xfzh193/

本文以学习,分享,研究交流为主,欢迎转载,请标明作者出处!

numpy基础4线性代数等

原文:https://www.cnblogs.com/xfzh193/p/11252764.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!