首页 > 编程问答 >从上三角获取矩阵的索引

从上三角获取矩阵的索引

时间:2024-07-29 15:33:51浏览次数:6  
标签:python numpy matrix

我有一个表示为 numpy 数组的对称矩阵,如下例所示:

[[ 1. 0.01735908 0.01628629 0.0183845 0.01678901 0.00990739 0.03326491 0.0167446 ]
 [ 0.01735908 1。0.0213712 0.02364181 0.02603567 0.01807505 0.0130358 0.0107082 ]
 [0.01628629 0.0213712 1。0.01293289 0.02041379 0.01791615 0.00991932 0.01632739]
 [0.0183845 0.02364181 0.01293289 1。0.02429031 0.01190878 0.02007371 0.01399866]
 [0.01678901 0.02603567 0.02041379 0.02429031 1。0.01496896 0.00924174 0.00698689]
 [0.00990739 0.01807505 0.01791615 0.01190878 0.01496896 1。0.0110924 0.01514519]
 [0.03326491 0.0130358 0.00991932 0.02007371 0.00924174 0.0110924 1.0.00808803]
 [ 0.0167446 0.0107082 0.01632739 0.01399866 0.00698689 0.01514519 0.00808803 1. ]]

并且我需要在不考虑对角线的情况下找到最大值的索引(行和列)。因为是一个对称矩阵,所以我只取矩阵的上三角形。

ind = np.triu_indices(M_size, 1)

然后最大值的索引

max_ind = np.argmax(H[ind])

但是 max_ind 是取上三角形后得到的向量的索引使用 triu_indices ,我如何知道我刚刚找到的值的行和列?

矩阵可以是任何大小,但它始终是对称的。您知道有更好的方法来实现同样的目的吗? 谢谢


import numpy as np

# 示例矩阵
H = np.array([[ 1.     ,  0.01735908,  0.01628629,  0.0183845 ,  0.01678901,
         0.00990739,  0.03326491,  0.0167446 ],
       [ 0.01735908,  1.     ,  0.0213712 ,  0.02364181,  0.02603567,
         0.01807505,  0.0130358 ,  0.0107082 ],
       [ 0.01628629,  0.0213712 ,  1.     ,  0.01293289,  0.02041379,
         0.01791615,  0.00991932,  0.01632739],
       [ 0.0183845 ,  0.02364181,  0.01293289,  1.     ,  0.02429031,
         0.01190878,  0.02007371,  0.01399866],
       [ 0.01678901,  0.02603567,  0.02041379,  0.02429031,  1.     ,
         0.01496896,  0.00924174,  0.00698689],
       [ 0.00990739,  0.01807505,  0.01791615,  0.01190878,  0.01496896,
         1.     ,  0.0110924 ,  0.01514519],
       [ 0.03326491,  0.0130358 ,  0.00991932,  0.02007371,  0.00924174,
         0.0110924 ,  1.     ,  0.00808803],
       [ 0.0167446 ,  0.0107082 ,  0.01632739,  0.01399866,  0.00698689,
         0.01514519,  0.00808803,  1.     ]])

M_size = H.shape[0]
ind = np.triu_indices(M_size, 1)
max_ind = np.argmax(H[ind])

# 获取行和列索引
row_ind, col_ind = ind[0][max_ind], ind[1][max_ind]

print("上三角形中最大值的索引:", max_ind)
print("行索引:", row_ind)
print("列索引:", col_ind)

在此代码中:

  1. 我们首先使用 np.triu_indices(M_size, 1) 获取上三角形(不包括对角线)的索引。
  2. np.argmax(H[ind]) 为我们提供了展平后的上三角形部分中的最大值的索引。
  3. 诀窍在于使用 ind[0][max_ind] ind[1][max_ind] triu_indices 获取相应的行和列索引。

此方法直接使用 triu_indices 返回的索引来查找原始矩阵中的行和列位置,从而有效地为提供了所需的结果。

请告诉我,如果想探索其他方法或对该解决方案有任何其他问题!

标签:python,numpy,matrix
From: 21316056

相关文章

  • 使用 powershell 或 python 从网页列出公司名称
    我希望使用PowerShell或python仅列出URL中的公司名称:https://www.moneycontrol.com/markets/earnings/results-calendar/?activeDate=2024-07-29下面是我的python脚本用于获取网页的结构:importrequestsfrombs4importBeautifulSoup#URLo......
  • T3/A40i支持Linux-5.10新内核啦,Docker、Qt、Python统统升级!
    自2021年创龙科技推出全志国产化率100%的T3/A40i工业核心板后,不到两年时间已超过800家工业客户选择创龙科技T3/A40i平台。随着客户产品的不断升级与迭代,部分“能源电力”、“工业自动化”行业客户对T3/A40i的Linux版本提出了更高要求,主要涉及Docker、Qt、Python等组件特性。秉持......
  • 使用 Python 中的多处理防止共享内存中的数据损坏?
    我目前正在开发一个多处理Python程序,其中每个进程将其索引作为连续的4字节整数写入共享内存。并且有一个读取器可以在没有任何锁的情况下读取其他进程的索引。因为我没有使用任何同步原语,所以我担心读取器进程可能会由于逐字节写入内存而读取损坏的数据(例如,一个索引的前2个......
  • Python如何统治AI世界?一文读懂它的优势与挑战
    一、Python语言介绍1.1Python语言概述Python是一种由GuidovanRossum于1991年首次发布的高级编程语言。其设计理念强调代码的可读性和简洁性,使其成为了许多开发者的首选语言。Python的语法简洁直观,采用了缩进来定义代码块,这与其他使用花括号或关键词的编程语言不同。Python......
  • 找到一种方法将program1的输出作为python中program2的输入发送
    有人可以帮我找到一种方法将program1的输出作为python中的program2的输入发送将其保存为.csv文件不会对我有帮助,因为该程序应该尽快执行这些任务。因此我正在寻找一种方法将程序1的终端输出直接发送到程序2在Python中,可以使用子进程模块将一个程序的输出发送到另一个程......
  • 同时运行多个Python程序的最佳方法
    我有一个python程序,我想同时运行多个具有不同参数的实例。这些实例彼此之间不进行通信。在单独的终端中运行每个实例太乏味了。我考虑使用多处理模块将每个实例作为单独的进程运行,但是我希望能够随时停止和重新启动某些单独的实例,而不会中断其他正在运行的实例。是否有任何流程......
  • 替换 Python 数据框中包含值的 <
    我有一个数据框,在某些列中存在诸如“<0.5、<10、<100”等值。如果值仅包含“<”,我想将所有这些值替换为0。我该怎么做?我对Python比较陌生。尝试使用pd.DataFrame.replace()。importpandasaspd#创建示例数据框df=pd.DataFrame({'A':['<0.5','<10',15,20],......
  • 基于funasr+pyaudio实现电脑本地麦克风实时语音识别项目语音转文本python实现
    【框架地址】https://github.com/modelscope/FunASR【简单介绍】FunASR是一个功能全面的语音识别工具包,支持多种预训练模型的推理和微调,提供高精度和高效能的语音识别服务。结合PyAudio库,可以实现电脑本地麦克风实时语音识别项目。该项目首先通过PyAudio库捕获麦克风输入的......
  • 从Python中的数据框中删除不必要的数据
    所以我这里有一个dat文件,我正在使用Python来读取它。在整个文件中,有一些不必要的行,例如BEGIN等,而我真正想开始阅读的部分是从数据帧开始。因此,我想检查在Python中执行此操作的最佳方法是什么,并且只阅读数据框何时开始?谢谢!以下是使用Python从数据......
  • Python拟合曲线
    拟合曲线多项式拟合np.ployfit(x,y,deg)importmatplotlib.pyplotaspltimportnumpyasnpx=[1,1.5,2,2.5,3,3.5,4,4.5,5,5.5,6,6.5,7,7.5,8]y=[33.40,79.50,122.65,159.05,189.15,214.15,238.65,252.2,267.55,280.50,296.65,301.65,310.......