计算numpy中一个函数的均值或中位数

时间:2016-06-07 18:22:29

标签: python arrays numpy mean

我有一个函数应该根据用户输入计算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上找不到任何内容......

  • Numpy有这样的东西吗?
  • 如果没有特定的功能,有人可以想到一个好方法 这样做?

谢谢!

2 个答案:

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