Python 为什么';t numpy阵列支持可链接操作,有何改进建议?

Python 为什么';t numpy阵列支持可链接操作,有何改进建议?,python,pandas,numpy,pycharm,method-chaining,Python,Pandas,Numpy,Pycharm,Method Chaining,我所说的可链接操作的意思是,可链接操作可以使用以前操作创建的最新数据帧。例如,考虑以下内容: array.ChainableOpA().ChainableOpB().ChainableOpC() 这样,我们可以“持续”地、更清晰地做事情。此类设计在pandas中提供 numpy有许多功能不是ndarray类的“方法”。例如,您可以调用numpy.nanmean,但没有array.nanmean。numpy中的这种设计禁止可链接操作 1) 那么为什么会发生这种情况呢?这是由于性能问题还是nump

我所说的可链接操作的意思是,可链接操作可以使用以前操作创建的最新数据帧。例如,考虑以下内容:

array.ChainableOpA().ChainableOpB().ChainableOpC()
这样,我们可以“持续”地、更清晰地做事情。此类设计在
pandas
中提供

numpy
有许多功能不是
ndarray
类的“方法”。例如,您可以调用
numpy.nanmean
,但没有
array.nanmean
。numpy中的这种设计禁止可链接操作

1) 那么为什么会发生这种情况呢?这是由于性能问题还是numpy的某些Zen


2) 我们有解决这个问题的办法吗?我可以考虑将
ndarray
子类化,并提供您想要的方法,但这似乎很乏味。在对
ndarray
进行子类化之后,我发现我使用的IDE PyCharm无法将其识别为用于在SciView中显示的数组。

您指的是流畅的界面。是否支持这样的接口取决于库的设计者。事实上,Python语言本身和内置类型往往不支持流畅的接口,尤其是可变类型。你的前提是
obj.met_a().met_b().met_c()
fun_c(fun_b(fun_a(obj))
更具可读性,至少对我来说,这是不言而喻的。因此,这个问题似乎主要基于观点。您是否研究过定义了十几个
nan
函数的
numpy/lib/nanfunctions.py
?显然,几年前编写该文件的人认为使用函数格式比使用方法1更容易。我想您可以尝试将其重写为方法,但不要指望其他开发人员提供很多帮助。查看发行说明,看看当前的开发工作进展如何(我的印象是,
ufunc
最受关注)。您指的是流畅的界面。是否支持这样的接口取决于库的设计者。事实上,Python语言本身和内置类型往往不支持流畅的接口,尤其是可变类型。你的前提是
obj.met_a().met_b().met_c()
fun_c(fun_b(fun_a(obj))
更具可读性,至少对我来说,这是不言而喻的。因此,这个问题似乎主要基于观点。您是否研究过定义了十几个
nan
函数的
numpy/lib/nanfunctions.py
?显然,几年前编写该文件的人认为使用函数格式比使用方法1更容易。我想您可以尝试将其重写为方法,但不要指望其他开发人员提供很多帮助。查看发行说明,看看当前的开发工作进展如何(我的印象是,
ufunc
最受关注)。