Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/357.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
数组中的python存储函数_Python_Arrays_Function - Fatal编程技术网

数组中的python存储函数

数组中的python存储函数,python,arrays,function,Python,Arrays,Function,也许是N00b问题 我是python新手,但我想知道是否可以在数组中存储函数?我想做一个数组乘法,其中一个数组的值乘以另一个函数数组位置上的一个函数。或者实际上,第一个数组的值被插入到指定位置的函数中。这将创建一个新数组,其中值是“乘法”的结果 假设f(x)、g(x)和h(x)是定义的函数。在这种情况下,python会说没有定义x。到目前为止我知道。但是,我不想说f(a[0][1]),因为我希望重用数组b,并且能够将函数放在数组中的随机位置上 简而言之,我发现了三个问题: -是否有一种已知的方法

也许是N00b问题

我是python新手,但我想知道是否可以在数组中存储函数?我想做一个数组乘法,其中一个数组的值乘以另一个函数数组位置上的一个函数。或者实际上,第一个数组的值被插入到指定位置的函数中。这将创建一个新数组,其中值是“乘法”的结果

假设f(x)、g(x)和h(x)是定义的函数。在这种情况下,python会说没有定义x。到目前为止我知道。但是,我不想说f(a[0][1]),因为我希望重用数组b,并且能够将函数放在数组中的随机位置上

简而言之,我发现了三个问题:
-是否有一种已知的方法可以使数组中的值是函数?
-如果不是,我应该重新定义数组函数还是为此编写一个新类?(如何解决此问题?
-如果可以创建函数数组,我可以在数组中动态填充“函数值”(用函数动态填充数组)还是只能是静态值

比如说

b[0]=f(x)
是的,我真的想用python来实现这一点。

f(x)
不是函数(即使在数学中也是如此)。函数是f。在python中,在数组中存储函数没有问题:

def my_func():
    print("Foo")

my_other_func = lambda: print("Bar")

my_arr = [my_func, my_other_func]

您的示例将调用函数的结果放入数组中

b[0] = f
实际上,将函数本身放入数组中

b[0](x)
将产生与

f(x)
是否有一种已知的方法可以使数组中的值是函数? 正如其他人已经指出的那样,有

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

f(x)表示一个函数,但我还不知道是哪个函数。我想你的解决方案可能就是我一直在寻找的。谢谢函数在python中并不特殊,每个数组操作都将正常工作。另外,除非用x调用f的结果本身是一个函数,否则f(x)不是一个函数当我这样做时,比如def my_func(x):6*x(当然有正确的样式)和def my_func(x):8*x,那么它会给我一个类型错误:不支持的操作数类型*:'int'和'function'a=[1,0],然后是np.dot(a,my_arr)[f(x)表示f in my_arr中的f,表示x in arr中的x]谢谢你的回答。然而,我故意不想使用for循环,而是希望它可以在矩阵中实现。哈哈,是的,我完全能想到参数这个词,谢谢。你不能指望
np.dot()
这是一种矩阵乘法方法,可以用作函数调用方法。是的,我看到了,但这只是为了说明我的意图。我想做矩阵运算,因为它通常比循环更快。我明白了。我不知道。谢谢
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