我试图将函数存储在数组中并将该数组存储在字典中,以便稍后可以通过字典调用该数组中的值。
我创建了一个零数组并创建了一个循环,随着循环的进行,该循环将函数存储在数组中。 Zeros 数组中的每个单元格都应包含该函数,但根据循环具有不同的参数。
我试过这个:
注意,在代码中,该函数是来自名为 SubKit 的 python 包的“HeatedSolid”,我将其导入为“sk”
另请注意,该函数不会生成整数或浮点数或任何数字,它只是一个生成参数的函数,我将使用不同的代码处理该参数。
示例: 如果您将参数传递给函数,
sk.HeatedSolid(我在这里随机放置参数)返回以下参数:
matrix = some array
X_position = some array
Y_position = some array
matrix_dict = {
10: {"multi": "69"},
20: {"multi": "59"},
30: {"multi": "49"}
}
array = np.zeros((10, 10))
for i in range(len(matrix)):
for j in range(len(matrix[i])):
if matrix[i,j] == "10":
if matrix[i,j] in matrix_dict.keys():
matrix_params = matrix_dict[matrix[i,j]]
array[i][j]= sk.HeatedSolid(x=X_position[i][j],
y=Y_position[i][j],
symtype= 1,
mult=rod_params("multi"),
power=1)
print(array)
当我打印数组时,它只是一个零数组,并且函数不存储在数组中
如果你想将函数本身(可调用的东西)存储在数组中,你应该使用python的内置数组而不是numpy的ndarray(后者只能存储原始int或float或string值)。
在您的情况下,您想要存储函数及其参数,因此您可以执行类似的操作:
matrix_dict = {
10: {"multi": "69"},
20: {"multi": "59"},
30: {"multi": "49"}
}
array = [] # note here
for i in range(len(matrix)):
array_row = [] # note here
for j in range(len(matrix[i])):
if matrix[i,j] == "10":
if matrix[i,j] in matrix_dict.keys():
matrix_params = matrix_dict[matrix[i,j]]
array_row.append((HeatedSolid, {"x":X_position[i][j],
"y":Y_position[i][j],
"symtype": 1,
"mult":rod_params("multi"),
"power":1})) # note here, append a tuple of function and its args
array.append(array_row) # note here
# when you want to call it later
for arr in array:
for (func, kwargs) in arr:
func(**kwargs)