/**/

我正在将代码从MatLab翻译成Python.我需要求出矩阵的下次对角线值.我在python语言中的try 似乎提取了相同的值(sum等于),但顺序不同.这是一个问题,因为我需要在之后使用Corrcoef.

最初的MatLab代码使用一组索引来子集一个矩阵.

MATLAB code:

values = 1:100;
matrix = reshape(values,[10,10]);

subdiag = find(tril(ones(10),-1));

matrix_subdiag = matrix(subdiag);

subdiag_sum = sum(matrix_subdiag);
disp(matrix_subdiag(1:10))
disp(subdiag_sum)

Output:
2 3 4 5 6 7 8 9 10 13

1530

My attempt in Python

import numpy as np

matrix = np.arange(1,101).reshape(10,10)
matrix_t = matrix.T #to match MATLAB arrangement

matrix_subdiag = matrix_t[np.tril_indices((10), k = -1)]

subdiag_sum = np.sum(matrix_subdiag)
print(matrix_subdiag[0:10], subdiag_sum))

输出: [2 3 13 4 14 24 5 15 25 35]1530

如何获得相同的订单输出?我的错误在哪里?

谢谢!

推荐答案

对于在未转置的矩阵上直接使用numpy.triu的和:

S = np.triu(matrix, k=1).sum()
# 1530

对于索引值为numpy.triu_indices_from,并按平面化数组进行切片:

idx = matrix[np.triu_indices_from(matrix, k=1)]

输出:

array([ 2,  3,  4,  5,  6,  7,  8,  9, 10, 13, 14, 15, 16, 17, 18, 19, 20,
       24, 25, 26, 27, 28, 29, 30, 35, 36, 37, 38, 39, 40, 46, 47, 48, 49,
       50, 57, 58, 59, 60, 68, 69, 70, 79, 80, 90])

Python相关问答推荐

在python中为抽象变量定义具体类时判断唯一值

将属性的“集合”直接添加到类的顶层

获取 Pandas 数据框中每一行的第二大值的列名

在 pandas 的 nlargest 操作中获取命名索引

如何在 python 中过滤和打印特定的 json 字典

Python:对象可以将对象作为“默认”表示吗?

TypeError: Cart() 没有参数

根据它们的最小值和最大值调整每个子图的绘图 colored颜色 条

如何比较 2 个有序词典并创建一个新的有差异的有序词典? (Python 3.7)

从 mlflow.pyfunc.load_model 返回的“PythonModelContext”对象 - 如何检索已保存的原始模型

Django rest 框架在 POST 请求中创建或更新

为什么这个特定代码在 Python 3.11 中运行得更快?

高值的概率和 rpg 骰子出错

Pylance 要求对一致的列表变量进行显式类型

组内的 Pandas 数据框行操作

将最大和最小行添加到 groupby 结果

使用存储在 json 中的变量 (f)-string

在多个文件中搜索单词的最有效方法

Discord 机器人为我做出react 的用户赋予角色

try 使用具有拆分信息的字典拆分 Pandas 系列时出错