我有以下问题:我希望创建和使用numpy数组,只需稍微改变操作符[]
。到目前为止,我知道这是通过__getitem__(self, index)
方法完成的。但是,我不知道如何做到这一点,所以我声明了一个数组,它在每个方面都是“numpyarray”,除了那一个问题(例如,为了示例起见,我希望array[i]
被解释为array[i-1]
我试着用以下方法解决:
class myarray(np.ndarray):
def __getitem__(self, index):
return self[index+1]
k = np.linspace(0, 10, 10).view(myarray)
虽然这不是真的有效
多亏了onodip答案,我解决了我最初的问题。 这和我发布的稍有不同,我学会了以后更具体(不要以身试法)。在
我最初想在“循环”中迭代矩阵——使n+1索引指向0,等等——换句话说,考虑它们的模形状。在
这对我来说是个很好的教训。感谢大家的回答和您的时间!在
你的代码有两个问题。第一,索引也可以是
tuple
(不仅仅是int
)。 另一个是,在函数的返回中,您将使用[]
获得项,它也使用getitem。这将导致无限递归。必须使用父类的函数与super()
相关问题 更多 >
编程相关推荐