Я хочу вызвать функцию, когда элемент матрицы равен 1, и я хочу пройти через строку матрицы (Python, Numpy)

#python #pandas #numpy #matrix

#python #pandas #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, и это соединение A-B, что также странно, так это тот факт, что когда я просто запускаю внутреннюю программу function1(), она, кажется, получает все допустимые соединения, но не сохраняет их в нужной строке соединений

Ответ №1:

На самом деле, после первой распечатки возникает ошибка выполнения, и трассировка стека завершается

 NameError: name 'Time' is not defined
 

Взгляните на функцию вычисления.
Его параметром является time со строчной буквой «t».
Но внутри этой функции у вас есть Time с заглавной буквой «T».

Меняйте время от времени, и ваш код должен выполняться без ошибок.