我有一个子类化的numpy数组 - 一个带有元数据的“光谱轴”。
我可以使用arr.copy
或使用例如arr2=arr[2:5]
的视图创建任何实例的副本。
有没有办法用其他形状创建其中一个的新实例但保持相同的元数据/数据类型?
答案 0 :(得分:2)
一个简单的解决方案是在子类中定义.reshape
方法。此.reshape
方法应调用负责从对象复制元数据的__array_finalize__
方法。
例如,MaskedArray
子类使用_update_from
私有方法将一些元数据(_fill_value
,_optinfo
...)从一个对象复制到另一个对象或设置默认值对于这些元数据,如果它们尚不可用。在_update_method
内调用__array_finalize__
。您可以按照sources作为示例。