>>> 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。