如何将方法绑定到(嵌套)numpy dtype?

时间:2015-12-29 01:19:16

标签: arrays object numpy record

我希望在numpy结构化数组中将对象方法与dtypes相关联。那就是我的对象集合的底层对象实例状态已经被打包成一个numpy(嵌套的dtype)record_arrays。    我已经有了一组Python对象,它们构建在这些numpy结构化数组dtypes的视图之上,然后对这个底层连续打包的对象实例数据进行操作。    那就是:我希望使用面向对象的编程方法,同时使用其本机打包的结构化格式中的底层实例状态。
  - >目前使用Python对象方法处理这些numpy结构化数组,每次我在数组中重新引用它时,都需要在它上面显式实例化一个Python对象的相关数组视图。    有可能更直接地将对象方法与numpy结构化数组(嵌套)dtype相关联,这样就可以避免每次都重建对象实例吗?

1 个答案:

答案 0 :(得分:2)

您的描述令人困惑。一些基本代码可能有助于使其更清晰。但是我会抛出一些可能相关的观察结果。

numpy数组有一个(大)连续数据缓冲区(平面字节列表),它被分成'记录'。 '形状'并且大踏步前进用于逐步完成记录。 ' D型'确定它的观点'每条记录。

虽然这些数组是Python对象类型,而dtype也是一个类,但一般来说,程序员不需要花费很多精力来构建添加的数组对象类。数组可以是较大对象(字典,列表,元组或自定义类)的属性。

matrixmasked_arrays是子类ndarray的示例。我没见过很多用户定义的子类;部分是因为使它们充分发挥作用的工作量并不值得。 recarray是一个子类,允许您使用属性语法访问结构化数组的字段。可能值得查看其 getattr 方法。获取通用数组操作以返回正确的数组类或子类有点棘手。

np.lib.index_tricks定义了一些允许您使用索引语法取代函数语法的类(即,它们定义了自定义__getitem__方法)。

我不知道如何继承dtype。最一般的基础dtype是' object'。它只存储指向存储在别处的Python对象的指针。该指针可以指向任何东西 - 数字,无,列表,另一个数组等。在结构化数组中,dtype是一个复合类型,由' list'组成。 sub-dtypes(可以嵌套)。但最终结构化的dtype由多个基本dtypes(整数,浮点数,字符串,对象)组成。