如何使用append()函数扩展Numpy数组类?

8hhllhi2  于 2023-08-05  发布在  其他
关注(0)|答案(2)|浏览(86)

我如何实现:

>>> foo = np.array([1,2,3])
array([1,2,3])
>>> foo.append(4)
array([1,2,3,4])

字符串
而不是numpy:

np.append(foo, 4)


我试过以下方法:

import numpy as np
class myarrayclass(np.array):
    def append(self, value):
        self.object = np.append(self.object, value)


另外,是否可以覆盖numpy类而不是创建自己的类?我不需要这个工作,只是想知道这是可能的,提前感谢!

fcy6dtqo

fcy6dtqo1#

我不确定这是否是最好的方法,但这里有一个方法。

import numpy as np

class myarrayclass(object):
    def __init__(self, in_array):
        self.array = in_array
        
    def append(self, val):
        self.array = np.append(self.array, val)
      
    def show(self):
        return self.array
        
        
foo = np.array([1,2,3])

myarray = myarrayclass(foo)
myarray.append(5)

myarray.show()
#Out[7]: array([1, 2, 3, 5])

字符串
当你创建一个对象时,你需要用def __init__(self, in_array)初始化它。这里我包含了一个简单的append和show方法。我包含了show方法来演示append的工作。

hi3rlvi2

hi3rlvi22#

dubbbdan的答案中的代码肯定有其价值,但我建议下面的实现:

import numpy as np

class MyArrayClass(np.ndarray):
    def __new__(cls, *args, **kwargs):
        return np.ndarray.__new__(cls, *args, **kwargs)

    def __init__(self, *args, **kwargs):
        super()

    def append(self, item):
        return np.append(self, item)

字符串
问题在于细节,答案并不是实际扩展numpy.ndarray类,而是为append函数创建一个类 Package 器。

相关问题