2015-02-11 32 views
4

我想将函数应用到矩阵的每一列。我想用参数来使用函数,但我不知道如何去做,我尝试过的东西以错误结束。蟒蛇如何把参数与numpy函数aply_along_axis

代码我runnung

import numpy as np 

M = np.array([[1,2,3,4], 
       [1,2,3,4], 
       [1,2,3,4], 
       [1,2,3,4]]) 

def my_function(arr, arg="default"): 
    print arg 
    return arr 

def my_function_allong_axis(M, argument): 
    return np.apply_along_axis(my_function, axis=0, arr=M, arg=argument) 

my_function_allong_axis(M, "something else") 

这将产生类型错误:apply_along_axis()得到了一个意想不到的关键字参数 'ARG'

+0

在你的注释代码你写了my_fucniton_along_axis,拼写错误;也许这会导致错误? – 2015-02-11 11:05:56

回答

3

解决方案:

def my_function_allong_axis(M, argument): 
    return np.apply_along_axis(my_function, 0, M, argument) 

关键字参数是问题,因为老numpy的的

-1

你没有通过 “ARG” 参数设置为 “创建my_function” 在“apply_along_axis”,所以它总是会打印默认值。 我调整你的代码,因此,它可以作为你想:

def my_function_allong_axis(M, argument): 
    return np.apply_along_axis(my_function, axis=0, arr=M, arg=argument) 
+0

TypeError:apply_along_axis()得到了一个意外的关键字参数'arg' – user2173836 2015-02-11 12:19:43

+0

你能发布你正在运行的整个代码吗?我没有收到错误。 您是否将变量名称从arg更改为第二个函数中的参数? 另外,你使用哪个版本的numpy? – 2015-02-11 12:54:51

+0

与上面相同的代码。我只是在第二个函数中将参数更改为参数。 Numpy版本1.6.2 – user2173836 2015-02-11 13:14:11