数组中的python存储函数

时间:2017-10-17 14:53:32

标签: python arrays function

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做这个。

3 个答案:

答案 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