我有一个函数应该根据用户输入计算numpy.array的均值或中位数。我这样写了
import numpy as np
...
if input=='means':
return np.mean(matrix, axis=1)
if input=='median':
return np.median(matrix, axis=1)
但这看起来有点麻烦。我想可能有一个标准的numpy函数,它将数组和操作作为输入。我正在思考与R tapply(X, Y, FUNCTION=Z)
类似的东西,其中Z
可以是任何一种功能。但我在docs或Google上找不到任何内容......
谢谢!
答案 0 :(得分:2)
如果您的输入字符串是mean
而不是means
,则可以执行以下操作:
return getattr(np, input)(matrix, axis=1)
这里getattr
调用从numpy库中获取你想要的函数。然后第二组括号调用该函数。
答案 1 :(得分:2)
我认为你不需要NumPy特有的东西。
例如:
def myFunc(matrix, func, axis=1):
return func(matrix)
然后,使用该功能:
import numpy as np
#Create random matrix (10, 10)
mat = np.random.randint(100, size=(10, 10))
print myFunc(mat, np.mean)