Numpy子类化:创建具有不同形状,相同元数据的数组的副本

时间:2012-10-29 02:10:31

标签: python arrays numpy reshape

我有一个子类化的numpy数组 - 一个带有元数据的“光谱轴”。

我可以使用arr.copy或使用例如arr2=arr[2:5]的视图创建任何实例的副本。

有没有办法用其他形状创建其中一个的新实例但保持相同的元数据/数据类型?

1 个答案:

答案 0 :(得分:2)

一个简单的解决方案是在子类中定义.reshape方法。此.reshape方法应调用负责从对象复制元数据的__array_finalize__方法。

例如,MaskedArray子类使用_update_from私有方法将一些元数据(_fill_value_optinfo ...)从一个对象复制到另一个对象或设置默认值对于这些元数据,如果它们尚不可用。在_update_method内调用__array_finalize__。您可以按照sources作为示例。