当前位置: 首页 > 面试题库 >

在python矩阵中将上三角复制到下三角

郏扬
2023-03-14
问题内容
       iluropoda_melanoleuca  bos_taurus  callithrix_jacchus  canis_familiaris
ailuropoda_melanoleuca     0        84.6                97.4                44
bos_taurus                 0           0                97.4              84.6
callithrix_jacchus         0           0                   0              97.4
canis_familiaris           0           0                   0                 0

这是我拥有的python矩阵的简短版本。我的信息在上方的三角形中。有简单的功能将矩阵的上三角复制到下三角吗?


问题答案:

要在NumPy中执行此操作,而无需使用双循环,可以使用tril_indices。请注意,根据矩阵的大小,这可能会比添加转置和减去对角线慢一些,尽管此方法可能更具可读性。

>>> i_lower = np.tril_indices(n, -1)
>>> matrix[i_lower] = matrix.T[i_lower]  # make the matrix symmetric

注意不要混用tril_indicestriu_indices因为它们都使用行主索引,也就是说,这行不通:

>>> i_upper = np.triu_indices(n, 1)
>>> i_lower = np.tril_indices(n, -1)
>>> matrix[i_lower] = matrix[i_upper]  # make the matrix symmetric
>>> np.allclose(matrix.T, matrix)
False


 类似资料:
  • 问题内容: 我有一个矩阵,我想要2个矩阵,所以包含A的上三角元素(所有元素在对角线以上且不包括对角线),以及类似的for (所有元素在下面的且不对角线)。有没有办法做到这一点? 例如 问题答案: 尝试(上三角)和(下三角)。

  • 这是我的审判,但它没有涵盖一切,也在重复,我做错了什么?

  • 特殊矩阵——三对角矩阵(Tridiagonal Matrix) 注:压缩存储的矩阵可以分为特殊矩阵和稀疏矩阵。对于那些具有相同元素或零元素在矩阵中分布具有一定规律的矩阵,被称之为特殊矩阵。对于那些零元素数据远远多于非零元素数目,并且非零元素的分布没有规律的矩阵称之为稀疏矩阵。 1. 三对角矩阵的概念 三对角矩阵就是对角线、邻近对角线的上下次对角线上有元素,其他位置均为0的矩阵。 三对角矩阵是一种特

  • 问题内容: 给定以下形式的方形熊猫DataFrame: 如何能在上三角熔化得到以下形式的矩阵 我对惯用的熊猫解决方案更感兴趣,自定义索引器将很容易手动编写… 预先感谢您的考虑和回应。 问题答案: 首先,我将的较低值转换为by和and ,然后设置列名称:

  • 我正在处理一个非常大的稀疏矩阵乘法(matmul)问题。作为一个例子,让我们说: > A是一个二进制(75 x 200,000)矩阵。它很稀疏,所以我使用csc进行存储。我需要执行以下matmul操作: B=A.转置()*A 输出将是大小为200Kx200K的稀疏对称矩阵。 不幸的是,B存储在我笔记本电脑上的RAM(或“核心”)中会变得太大。另一方面,我很幸运,因为B有一些属性可以解决这个问题。

  • 一个表示3X3矩阵matrix.的类。 代码示例 const m = new Matrix3(); 注意行优先列优先的顺序。 set()方法参数采用行优先row-major, 而它们在内部是用列优先column-major顺序存储在数组当中。 这意味着 m.set( 11, 12, 13, 21, 22, 23, 31, 32, 33 );元素数组elements将存储