python - 分析在 Numpy 数组上使用 dir() 的结果
问题描述
我有一个 numpy 数组 a。
当我在 numpy 数组上使用 dir() 时,如下所示:
dir(a)
我得到以下列表:
'__abs__',
'__add__',
'__and__',
'__array__',
'__array_finalize__',
'__array_function__',
'__array_interface__',
'__array_prepare__',
'__array_priority__',
'__array_struct__',
'__array_ufunc__',
'__array_wrap__',
'__bool__',
'__class__',
'__complex__',
'__contains__',
'__copy__',
'__deepcopy__',
'__delattr__',
'__delitem__',
'__dir__',
'__divmod__',
'__doc__',
'__eq__',
'__float__',
'__floordiv__',
'__format__',
'__ge__',
'__getattribute__',
'__getitem__',
'__gt__',
'__hash__',
'__iadd__',
'__iand__',
'__ifloordiv__',
'__ilshift__',
'__imatmul__',
'__imod__',
'__imul__',
'__index__',
'__init__',
'__init_subclass__',
'__int__',
'__invert__',
'__ior__',
'__ipow__',
'__irshift__',
'__isub__',
'__iter__',
'__itruediv__',
'__ixor__',
'__le__',
'__len__',
'__lshift__',
'__lt__',
'__matmul__',
'__mod__',
'__mul__',
'__ne__',
'__neg__',
'__new__',
'__or__',
'__pos__',
'__pow__',
'__radd__',
'__rand__',
'__rdivmod__',
'__reduce__',
'__reduce_ex__',
'__repr__',
'__rfloordiv__',
'__rlshift__',
'__rmatmul__',
'__rmod__',
'__rmul__',
'__ror__',
'__rpow__',
'__rrshift__',
'__rshift__',
'__rsub__',
'__rtruediv__',
'__rxor__',
'__setattr__',
'__setitem__',
'__setstate__',
'__sizeof__',
'__str__',
'__sub__',
'__subclasshook__',
'__truediv__',
'__xor__',
'all',
'any',
'argmax',
'argmin',
'argpartition',
'argsort',
'astype',
'base',
'byteswap',
'choose',
'clip',
'compress',
'conj',
'conjugate',
'copy',
'ctypes',
'cumprod',
'cumsum',
'data',
'diagonal',
'dot',
'dtype',
'dump',
'dumps',
'fill',
'flags',
'flat',
'flatten',
'getfield',
'imag',
'item',
'itemset',
'itemsize',
'max',
'mean',
'min',
'nbytes',
'ndim',
'newbyteorder',
'nonzero',
'partition',
'prod',
'ptp',
'put',
'ravel',
'real',
'repeat',
'reshape',
'resize',
'round',
'searchsorted',
'setfield',
'setflags',
'shape',
'size',
'sort',
'squeeze',
'std',
'strides',
'sum',
'swapaxes',
'take',
'tobytes',
'tofile',
'tolist',
'tostring',
'trace',
'transpose',
'var',
'view']
现在,我有两个问题:
有没有办法自动将上面列表中的属性和方法分开?我的意思是有一种方法可以只输出 numpy 数组的方法列表或属性。
列表中有 dunder 方法 __ len __ 但作为 dir(a) 的结果输出的列表中没有 len()。为什么?
解决方案
列表中有 dunder 方法 __ len __ 但作为 dir(a) 的结果输出的列表中没有 len()。为什么?
__len__()
实现len()
。
有没有办法自动将上面列表中的属性和方法分开?我的意思是有一种方法可以只输出 numpy 数组的方法列表或属性。
对于属性,您可以执行vars(a)
.
对于您可以执行的方法:
methods = [method_name for method_name in dir(a)
if callable(getattr(a, method_name))]
在上面的代码片段中,您将通过检查是否可调用来创建表示方法名称的字符串列表object.method_name
。
如果您想要非 dunder 方法,则可以添加以下修改:
def is_dunder(name):
if (
len(name) > 4 and
name[:2] == name[-2:] == '__'
):
return True
else:
return False
non_dunder_methods = [
method_name for method_name in a if
not is_dunder(method_name) and callable(getattr(a, method_name))
]
推荐阅读
- assembly - 汇编函数地址表和函数下或数据段中的数据
- java - 如何使用 Apache Beam 和 Jackson 解析常规(不是换行符分隔的)json?
- java - 它们与第三类相关的两个类之间有什么关系?
- sql - 特定 GROUP 上的 SQL Server 过程筛选器
- javascript - 如果尚未准备好,如何使用 SetTimeout 发送 GET 请求并获取数据?
- javascript - 如何使用 xml http 请求更新 div 数据
- javascript - 有没有办法通过 Webpack 5 将一个大的 .sass 文件拆分为多个 .css?
- elasticsearch - AND 在字符串数组中搜索 Elasticsearch
- c - 试图让计算机猜测我的号码,但获得工作的上限和下限
- oracle - 自治数据库是否提供与本地数据库相同的 NLS 支持?