python - 我想在矩阵元素为 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 将它们保存在正确的连接行中
解决方案
实际上,在第一次打印输出后,会出现执行错误,并且 StackTrace 以
NameError: name 'Time' is not defined
看一下计算功能。它的参数是time,小写“t”。但是在这个函数里面你有Time,大写的“T”。
不时更改,您的代码应该没有错误地执行。
推荐阅读
- java - java在实例化时设置对象字段等于另一个字段
- java - 如何在java中使用selenium webdriver解析整个DOM元素并跟踪DOM中的变化
- python - ipython 看不到安装的库
- javascript - 从javascript中的php表循环获取值并更改php中的值
- java - 如何从 spark DataFrame 解析具有自定义 json 格式的列
- php - Unity3D 作为渲染服务器
- mongoose - Mongoose duplicate queries
- batch-file - Batch Script to Move a File and Display in Notepad
- forms - Saving Form Data to Custom Table
- selenium - Retrieve output log when test fails during setup