基于python numpy库实现的二次型标准化的算法

寒假在家,闲来无事,摆烂之余,写了一个基于python numpy的矩阵标准化算法,适用于任意对称阵的标准化(由于规范化很简单就做)。

没用用到任何高级的东西,就是遍历循环按照矩阵的初等变换来标准化,可能效率不是很高,但是除非大型矩阵(几万几百万那种的),一般能见到的矩阵就是秒出结果,当数据较少或较小时算法间的差别并不大(基本没有什么区别)

代码如下:

 1 import numpy as np
 2 
 3 a = np.array(eval(input('请输入矩阵:')), dtype=np.float16)
 4 x = len(a)
 5 print('原矩阵:\n',a)
 6 for n in range(x):
 7     if a[n, n] == 0 and n != x - 1:
 8         v = 0
 9         for i in range(x):
10             v = v + a[n, i]
11         if v == 0:
12             continue
13         else:
14             for i in range(x):
15                 if a[n, i] == 0:
16                     continue
17                 else:
18                     for p in range(x):
19                         a[int(f'{p}'), int(f'{n}')] -= a[int(f'{p}'), int(f'{i}')]
20                     for p in range(x):
21                         a[int(f'{n}'), int(f'{p}')] -= a[int(f'{i}'), int(f'{p}')]
22                     break
23         for i in range(n + 1, x):
24             xi_shu = a[n, i] / a[n, n]
25             for p in range(x):
26                 a[int(f'{p}'), int(f'{i}')] -= a[int(f'{p}'), int(f'{n}')] * xi_shu
27             for p in range(x):
28                 a[int(f'{i}'), int(f'{p}')] -= a[int(f'{n}'), int(f'{p}')] * xi_shu
29     else:
30         for i in range(n + 1, x):
31             xi_shu = a[n, i] / a[n, n]
32             for p in range(x):
33                 a[int(f'{p}'), int(f'{i}')] -= a[int(f'{p}'), int(f'{n}')] * xi_shu
34             for p in range(x):
35                 a[int(f'{i}'), int(f'{p}')] -= a[int(f'{n}'), int(f'{p}')] * xi_shu
36 print('标准化矩阵:\n',a)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值