【问题标题】:How to extend Numpy array class with append() function?如何使用 append() 函数扩展 Numpy 数组类?
【发布时间】:2020-11-13 15:07:15
【问题描述】:

我该如何实现:

>>> 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 类而不是创建我自己的类? 我不需要这个工作,只是想知道它是否可能,提前谢谢!

【问题讨论】:

  • 在尝试之前先查看np.append 的代码。它不是一个列表append 克隆,不应被视为一个。
  • 最接近于列出追加的是resize 方法。这可以就地添加零。查看np.resize 函数的代码可能会有所启发,该函数没有就地运行。而是使用concatenatereshape,创建一个新数组。

标签: python arrays numpy class


【解决方案1】:

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

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) 对其进行初始化。在这里,我包含了一个简单的附加和显示方法。我包含了 show 方法来证明附加功能有效。

【讨论】:

  • 感谢您的建议!遗憾的是,这并没有真正扩展 numpy 类,并导致您失去其所有功能。我想在现有功能中添加一个功能。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-24
  • 2020-12-13
相关资源
最近更新 更多