为什么numpy中有些函数是np.ndarray的方法,有些是函数?

yoh*_*hai 5 numpy

这是一个软问题,但我怀疑理解这一点将帮助我(也希望其他人)更好地理解numpy(我最近从 MATLAB 迁移)的哲学。

有些函数,如summaxtransposeconjugate是类的方法ndarray,因此可以使用arr.sum()arr.sum(axis=1)等。

不过,大多数函数都是模块的函数numpy,因此您需要像numpy.count_nonzero(arr)、 或numpy.roll(arr)等那样调用它们。其中许多方法仅将单个ndarray对象作为输入,因此在设计方面可以将它们视为数组本身的属性。

这种设计选择背后的逻辑是什么?

yoh*_*hai 1

我回复评论(谢谢!):

我最初认为有一些基本原则、基本真理。我猜想,一旦掌握了这个真理,我对 NumPy、Python 甚至生活本身的理解就会得到扩展和澄清。唉,事实证明,这只是一个计划外的补丁上的补丁,没有组织原则,没有指导方案:仅仅是宇宙随机性的产物,而我们都是宇宙随机性的奴隶。