在numpy中,为什么.var()是一个方法而mean()是一个正常的函数?

时间:2017-12-08 09:08:50

标签: python numpy methods

作为一名学习Python的R程序员,我几次对Python语法感到困惑。许多这些行为对我来说似乎是武断的。这将有助于我理解为什么事情就像它们在Python中一样。我也是OOP的新手,所以这可能是我混淆的原因。

具体来说,这两点在遵循教程时最让我困惑:

  1. 要计算数组的均值,请使用np.mean(myarray)。但是要计算方差,可以使用myarray.var()(这是方法,对吧?)。这似乎是随意的 - 是否有理由选择以这种方式实施?

  2. 绘制直方图包含两个后续命令,plot.hist(values, 50)后跟plt.show()。为什么第二次电话需要?第一次通话的“结果”存储在哪里?这是某种OOP魔法吗?

1 个答案:

答案 0 :(得分:3)

你可以两种方式使用这些方法:推理是为那些不熟悉OOP的用户提供友好的科学python包,并为习惯使用matlab或R的用户提供熟悉的API。 正如@Mel的评论中所指出的,matplotlib包也共享此功能。

import numpy as np

a = np.array([range(10)])
a.mean(), a.var(), np.mean(a), np.var(a)

输出:

(4.5, 8.25, 4.5, 8.25)