N00b问题,也许。
我是python的新手,但我想知道是否可以在数组中存储函数?我想做一个数组乘法,其中一个数组的值乘以另一个函数数组的位置上的函数。或者实际上,第一个数组的值插入指定位置的函数中。这应该创建一个新数组,其中值是“乘法”的结果。
>>> import numpy as np
>>> a = [[1, 0], [0, 1]]
>>> b = [[f(x), g(x)], [(h(x), f(x)]]
>>> np.dot(a, b)
array([[0, 1],
[2, 0]])
假设f(x),g(x)和h(x)是定义的函数。在这种情况下,python会说x没有定义。到目前为止,我知道。但是,我不想说,例如,f(a [0] [1]),因为我想重用数组b,并且能够将函数放在数组中的随机位置。
总之,我发现了三个问题:
- 有一种已知的方法来建立一个值为函数的数组吗?
- 如果没有,我应该重新定义一个数组函数还是为此写一个新类? (我该如何解决这个问题?)
- 如果可以创建一个函数数组,我可以在数组中动态填充'函数值'(用函数动态填充数组)还是只能是静态值?
例如
b[0]=f(x)
是的,我真的想用python做这个。
答案 0 :(得分:2)
f(x)
不是一个函数(即使在数学中)。功能是f。在python中,将函数存储在数组中没有问题:
def my_func():
print("Foo")
my_other_func = lambda: print("Bar")
my_arr = [my_func, my_other_func]
答案 1 :(得分:2)
您的示例将调用函数的结果放入数组中。
b[0] = f
实际上将函数本身放入数组中,以便
b[0](x)
与
具有相同的效果f(x)
答案 2 :(得分:1)
正如其他人所说的那样。
def my func(x):
return x
my_other_func = lambda x: x
l = [my_func, my_other_func]
不相关
'功能值'被称为参数,可以在数组中使用函数后进行分配:
a[0](5) # == my_func(5)
a[1]('Hello') # == my_other_func('Hello')
问题在于你正在尝试使用矩阵乘法作为参数传递而且不起作用,你可以创建一个辅助函数来完成它。
def callByElements(parameterMatrix, functionMatrix):
rows = len(parameterMatrix)
cols = len(parameterMatrix[0])
result = np.zeros( (rows, cols) )
for i in range(rows):
for j in range(cols):
result[i,j] = functionMatrix[i,j](parameterMatrix[i,j])
return result