Python 上的暂存矩阵

安德鲁·乔纳坦

我在尝试交错 5x5 阵列时遇到问题。首先,我使空行转到数组的最后一行(它起作用了),然后我尝试使索引最高的行保持在索引较小的行下方,但在该行中:

if pivot_index[i] > pivot_index[line_aux] and line_aux < 5 and i < 5:

在代码中,编译器警告列表索引超出范围,但我不知道为什么(这就是问题),或者如何解决它。下面的算法如下:

import numpy as np
def search_pivot(L):
    if (np.nonzero(L)[0]).size == 0:
        return -1
    else:
        return np.nonzero(L)[1][0]

def find_pivot_index(mat):
    pivot = []
    for i in range(5):
        pivot.append(search_pivot(np.array(mat[i])))
    return pivot

mat = np.matrix([[0,5,2,7,8],[0,0,4,14,16],[0,0,0,0,0],[2,6,10,16,22],[3,5,8,9,15]]).astype(float)
print("Original array:\n",mat,"\n")

pivot_index = find_pivot_index(mat)

line_aux = 0
for i in range(5): 
    line_aux = line_aux + 1
    if pivot_index[i] > pivot_index[line_aux] and line_aux < 5 and i < 5:
        m = mat.tolist()
        (m[i],m[linha_aux]) = (m[linha_aux],m[i])
        mat = np.matrix(m)
        pivot_index = find_pivot_index(mat)

print(mat,"\n")

line_aux = 0
for i in range(5):
    line_aux = line_aux + 1
    if pivot_index[i] == -1 and line_aux < 5 and i < 5:
        m = mat.tolist()
        (m[i],m[linha_aux]) = (m[linha_aux],m[i])
        mat = np.matrix(m)
        pivot_index = find_pivot_index(mat)

print(mat)
塔索斯·帕帕斯蒂利亚努

andpython中运算符是一个短路布尔运算符

这意味着and如果左侧是,它只会继续评估右侧的部分True如果左侧是False,由于这完全确定了布尔运算的结果,因此不会评估右侧部分。这允许程序员在左侧执行测试,然后再进行可能导致错误的更具“风险”的评估。

在您的代码中,您将在风险操作之后进行测试您尝试使用 5 的 linha_aux进行索引linha_aux您正在检查(无论这意味着什么)是否小于5。(当 i = 4 时会发生这种情况,因为循环的第一行是递增.pivos_indiceslinha_aux

所以:

  • 为了“简单地”避免“索引不足”错误,请在有风险的操作之前进行测试:

    if line_aux < 5 and i < 5 and pivot_index[i] > pivot_index[line_aux]:
    
  • linha_aux如果这对您的算法更有意义,您可能需要考虑实际上您是否打算在循环结束时而不是在开始时增加;记住python数组是0索引的

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Python-稀疏矩阵上的映射

来自分类Dev

组合多个在矩阵python上迭代的for循环

来自分类Dev

TypeError:在我的python旋转矩阵上

来自分类Dev

在Azure上暂存或降落

来自分类Dev

使用python在几何意义上缩放方矩阵

来自分类Dev

单个图像上python中的非负矩阵分解

来自分类Dev

Kubernetes上的暂存和生产

来自分类Dev

Kubernetes上的暂存和生产

来自分类Dev

Ubuntu 18.04 上的 Wine 暂存

来自分类Dev

根据字符串Python上的字符在矩阵上查找位置并检索该位置的值

来自分类Dev

Python:在矩阵上随机选择而不选择同一行上的数字

来自分类Dev

First Data Payment Integration上的暂存帐户

来自分类Dev

Munkres库python的print_matrix在包含零的矩阵上引发异常

来自分类Dev

计算几何级数的上三角矩阵的最快方法(Python)

来自分类Dev

查找任意矩阵n * n的上/下三角形式-Python

来自分类Dev

Numpy Array与Python List在1D矩阵上的性能(矢量)

来自分类Dev

在python上实现永无止境的矩阵公式以进行曲线拟合

来自分类Dev

我如何从python我的数据集中的文本文件读取并在其上应用矩阵

来自分类Dev

Munkres库python的print_matrix在包含零的矩阵上引发异常

来自分类Dev

如何在python中的矩阵和向量上使用reduce/lambda函数?

来自分类Dev

Python转换矩阵

来自分类Dev

Python选择矩阵元素

来自分类Dev

Python中的DFT矩阵

来自分类Dev

奇异矩阵-Python

来自分类Dev

列表矩阵-Python

来自分类Dev

填充python矩阵

来自分类Dev

Python:Numpy矩阵拆分

来自分类Dev

灰度共生矩阵// Python

来自分类Dev

Python张量矩阵乘法