>>> X = np.random.rand(
5
**
2
).reshape(
5
,
5
)
array(
[[ 0.26984148, 0.25408384, 0.12428487, 0.0194565 , 0.91287708],
[ 0.31837673, 0.35493156, 0.74336268, 0.31810561, 0.04409245],
[ 0.06644445, 0.8967897 , 0.10990936, 0.05036292, 0.72581982],
[ 0.94758512, 0.21375975, 0.36781736, 0.1633904 , 0.36070709],
[ 0.53263787, 0.18380491, 0.0225521 , 0.91239367, 0.75521585]]
)
step 2:保留其上三角部分
>>> X = np.triu(X)
# 保留其上三角部分
array([[ 0.26984148, 0.25408384, 0.12428487, 0.0194565 , 0.91287708],
[ 0. , 0.35493156, 0.74336268, 0.31810561, 0.04409245],
[ 0. , 0. , 0.10990936, 0.05036292, 0.72581982],
[ 0. , 0. , 0. , 0.1633904 , 0.36070709],
[ 0. , 0. , 0. , 0. , 0.75521585]])
step 3:将上三角”拷贝”到下三角部分
>>> X += X.T - np.diag(X.diagonal())
array([[ 0.26984148, 0.25408384, 0.12428487, 0.0194565 , 0.91287708],
[ 0.25408384, 0.35493156, 0.74336268, 0.31810561, 0.04409245],
[ 0.12428487, 0.74336268, 0.10990936, 0.05036292, 0.72581982],
[ 0.0194565 , 0.31810561, 0.05036292, 0.1633904 , 0.36070709],
[ 0.91287708, 0.04409245, 0.72581982, 0.36070709, 0.75521585]])
注意,要减去一次对角线上的元素。
因为上三角
cov
,和下三角
cov.T
在进行相加时会把主对角线上的元素相加两次。
step 4:测试
>>> X.T == X
array([[ True, True, True, True, True],
[ True, True, True, True, True],
[ True, True, True, True, True],
[ True, True, True, True, True],
[ True, True, True, True, True]], dtype=bool)
对称(实对称)矩阵也即:XT=XX^T=Xstep 1:创建一个方阵>>> import numpy as np>>> X = np.random.rand(5**2).reshape(5, 5)>>> Xarray([[ 0.26984148, 0.25408384, 0.12428487, 0.0194565 , 0.91287708], [ 0.31837673,
NMFLIB
NMFLIB 是轻量级库的早期版本,包括非负矩阵分解的不同实现和变体,使用python 、
numpy
、scipy 和来自 scikit learn 的一些组件构建。
该库的主要应用是集群。
目前,该库包括以下初始实现:
古典 NMF(Lee 和 Seung)
投影 NMF(元和 Oja)
非负谱聚类(Ding 等人)
Cluster-NMF(Convex-NMF 的对称变体)(Ding 等人)
稀疏 NMF(Kim 和 Park)
如有任何问题,您可以随时我。
什么是
NumPy
呢?
NumPy
这个词来源于两个单词 – Numerical和Python。其是一个功能强大的 Python 库,可以帮助程序员轻松地进行数值计算,通常应用于以下场景:
执行各种数学任务,如:数值积分、微分、内插、外推等。因此,当涉及到数学任务时,它形成了一种基于 Python 的 MATLAB 的快速替代。
计算机中的图像表示为多维数字数组。
NumPy
提供了一些优秀的库函数来快速处理图像。例如,镜像图像、按特定角度旋转图像等。
在编写机器学习算法时,需要对矩阵进行各种数值
在计算机科学中,
对称矩阵
可用于存储对象之间的距离或表示为无向图的邻接矩阵。与经典矩阵相比,使用
对称矩阵
的主要优势在于较小的内存需求。在这篇文章中,描述了这种矩阵的Python实现。
在
对称矩阵
中,是等同于的。由于这个特性,一个的
对称矩阵
需要存储的也仅仅是个元素...
关注第一个第三个参数就行了
第一个参数:输出方阵(行数=列数)的规模,即行数或列数
第三个参数:默认情况下输出的是对角线全“1”,其余全“0”的方阵,如果k为正整数,则在右上方第k条对角线全“1”其余全“0”,k为负整数则在左下方第k条对角线全“1”其余全“0”。
>>> np.eye(2, dtype=int)
https://cloud.tencent.com/developer/article/1162198
2.矩阵专栏
吐槽一下:矩阵本身不难,但是矩阵的写作太蛋疼了 (⊙﹏⊙)汗 还好有
Numpy
,不然真的崩溃了…
LaTex有没有一个集成了很多常用 公式以及 推导或者含 题库的在线编辑器?
代码裤子:https://github.com/lotapp/B...
对称矩阵
乘法运算可以使用
NumPy
库中的dot函数实现。由于
对称矩阵
的特殊性质,我们可以只计算其中一个三角形部分的值,然后将结果镜像对称得到完整的
对称矩阵
。
以下是一个示例代码:
```python
import
numpy
as np
# 生成
对称矩阵
A和向量x
A = np.array([[1, 2, 3], [2, 4, 5], [3, 5, 6]], dtype=np.float)
x = np.array([1, 2, 3], dtype=np.float)
# 计算A*x并得到
对称矩阵
B = np.dot(A, x)
C = np.triu(B) + np.triu(B, 1).T
print('A*x:\n', B)
print('
对称矩阵
:\n', C)
输出结果:
[14. 24. 32.]
对称矩阵
:
[[14. 24. 32.]
[24. 24. 37.]
[32. 37. 32.]]
其中,`np.triu(B)`表示取出B矩阵的上三角部分,`np.triu(B, 1).T`表示取出B矩阵的上三角部分(不包括对角线)的转置,相加得到
对称矩阵
C。