如何制作一个具有改变自身功能的ndarray类对象?

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

我也想上这样的课

class Test(np.ndarray):

    def shift_up(self):
        arr = np.copy(self)
        n = len(self)
        for i in range(1,n)[::-1]:
            arr[i] = arr[i-1]
        arr[0] = np.nan
        self.__init__(arr)

    def truncate(self,index):
        arr = np.copy(self)
        arr_slice = np.copy(arr[:index+1])
        self.__init__(arr_slice) 

array = Test(np.array([1,2,3,4,5]))
array.truncate(5)

我知道我可以用 numpy 函数来做到这一点。但我希望它是这样的,只是为了让它更易读。但这不起作用。

python class
1个回答
0
投票

尝试

class Test:
    
        def __init__(self,npArray):
            self.__npArr__ = npArray.copy()
    
        def truncate(self,index):
            
            if index > len(self.__npArr__):
                pass #Make sure you check the boundaries first
            self.__npArr__ = self.__npArr__[:index]
            
        def __str__(self): #This is called when you're trying to print the object
            return str(self.__npArr__)
    
    array = Test( np.array([1,2,3,4,5]))
    array.truncate(3)
    print(array)
© www.soinside.com 2019 - 2024. All rights reserved.