【问题标题】:Numpy subclassing: Create a copy of an array with different shape, same metadataNumpy 子类化:创建具有不同形状、相同元数据的数组的副本
【发布时间】:2012-10-29 02:10:31
【问题描述】:

我有一个子类 numpy 数组 - 一个带有元数据(例如单位)的“光谱轴”。

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

有没有办法创建这些数组之一的新实例具有不同的形状但保持相同的元数据/数据类型?

【问题讨论】:

    标签: python arrays numpy reshape


    【解决方案1】:

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

    例如,MaskedArray 子类使用 _update_from 私有方法将一些元数据(_fill_value_optinfo...)从一个对象复制到另一个对象,或者为这些元数据设置默认值(如果它们还没有)可用的。 _update_method__array_finalize__ 内被调用。您可以以sources 为例。

    【讨论】:

    • 我认为我需要的只是一个 _update_from 方法。这很重要:我必须指定要继承的属性,但它有效。
    • 如果你的子类有一个__dict__,你可以首先确保它被正确地复制到__array_finalize__。你可能不需要整个_update_from
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-23
    • 2020-12-17
    • 2021-02-28
    相关资源
    最近更新 更多