0

我正在尝试做一些简单的事情(我认为)。但是,我显然不明白发生了什么。

  • 我有一个创建多维数组的类
  • 我希望通过将数组索引和值传递给类的方法来获取和设置数组元素的方法。
  • 这是代码。

    from numpy import *
    
    class Space():
        def __init__(self, shape, mode):
            self.space = ndarray(shape, dtype=list )
            self.mode = mode
    
        def get(self, elem) :
            return(self.space[elem])
    
        def set(self, elem, val):
            self.space[elem] = val        
    shape = [2,2,2]
    s = Space(shape, 'wrap')
    s.set([1,1], [2,2])
    print s.get([1,1])
    

这应该是一个直截了当的过程。我显然不理解这里相当基本的东西。对正在发生的事情和做什么的解释将不胜感激。谢谢。

4

1 回答 1

2

当使用语法访问多维数组的一项时a[i, j, k],方括号运算符内的参数实际上是一个元组,而不是一个列表。它等同于写作a[(i, j, k)],但在方括号内你可以省略括号。调用常规函数时,它们是强制性的。

s.set((1, 1), [2, 2])
print s.get((1, 1))

我建议重写__getitem__()and __setitem__(),这样您就可以为您的自定义类使用常规方括号运算符。

于 2013-07-18T16:53:23.670 回答