首页 > 解决方案 > 我想在矩阵元素为 1 时调用一个函数,并且我想逐行遍历矩阵(Python,Numpy)

问题描述

所以我有一个小程序,当矩阵的选定元素为 1 时,我想调用一个函数,但是当我执行程序时,它不会在每次矩阵有 1 作为元素时打印出来。这是我的代码:

import numpy as np
import pandas as pd

Name = ["A", "B", "C", "D", "E"]
X = 0
S2 = pd.DataFrame([
             [X, 1, 0, 1, 1],
             [0, X, 1, 0, 0],
             [0, 0, X, 1, 0],
             [0, 0, 0, X, 1],
             [0, 0, 0, 0, X]
             ], index=Name, columns=Name)
I_Max_array = np.zeros((1,200))

def function1():
    Connections = np.zeros((7, 3), dtype=np.object)
    Connections[0][0] = "Connection"
    Connections[0][1] = "Line-Type"
    Connections[0][2] = "I-Max"
    for i in range(0, len(S2)):
        column_name = S2.index[i]
        for j in range (0, i):
            if S2[column_name][j] == 1:
                row_name = S2.dtypes.index[j]
                connection_name = str(row_name) + "-" + str(column_name)
                print("calculate connection " + str(connection_name))
                for time in range(0, I_Max_array.size):
                    I_Max = calculate(time)
            Connections[i+1][2] = I_Max
    return Connections

def calculate(time):
    I_Max = 2*2
    I_Max_array[0][Time] = I_Max
    return I_Max_array

I_Max = function1() 

该程序只打印出矩阵为 1 的 1 行,即连接 AB,同样奇怪的是,当我只运行 function1() 的内部程序时,它似乎获得了所有有效的连接,但没有t 将它们保存在正确的连接行中

标签: pythonpandasnumpymatrix

解决方案


实际上,在第一次打印输出后,会出现执行错误,并且 StackTrace 以

NameError: name 'Time' is not defined

看一下计算功能。它的参数是time小写“t”。但是在这个函数里面你有Time大写的“T”。

不时更改,您的代码应该没有错误地执行


推荐阅读