让 numpy.concatenate 返回正确的子类而不是普通的 ndarray

问题描述 投票:0回答:1

我有一个 numpy 数组子类,我希望能够连接它们。

import numpy as np

class BreakfastArray(np.ndarray):
    def __new__(cls, n=1):
        dtypes=[("waffles", int), ("eggs", int)]
        obj = np.zeros(n, dtype=dtypes).view(cls)
        return obj
        
b1 = BreakfastArray(n=1)
b2 = BreakfastArray(n=2)
con_b1b2 = np.concatenate([b1, b2])

print(b1.__class__, con_b1b2.__class__)

这输出

<class '__main__.BreakfastArray'> <class 'numpy.ndarray'>
,但我希望连接数组也是一个
BreakfastArray
类。看来我可能需要添加一个
__array_finalize__
方法,但我无法找出正确的方法。

python numpy numpy-ndarray
1个回答
0
投票

创建

con_bib2
作为新的
BreakfastArray
,然后在连接存储时使用
out=con_bib2

con_bib2 = BreakfastArray(n=3)
np.concatenate([b1, b2], out=con_bib2)
© www.soinside.com 2019 - 2024. All rights reserved.