kch*_*462 2 python matrix slice magic-methods
我试图在python中编写自己的矩阵类,仅用于测试目的.实际上,这个矩阵类是用c ++编写的,我使用SWIG来连接两者.但是,对于这个问题,考虑这个矩阵类的纯python实现可能更简单.
我希望能够调用此矩阵类并使用双索引切片.例如,在我们创建4x4矩阵之后,
>>> A = Matrix(4,4,1)
Run Code Online (Sandbox Code Playgroud)
我希望能够获得sub 2x2矩阵:
>>>> A[1:2,1:2]
Run Code Online (Sandbox Code Playgroud)
我听说过这种__getslice__方法,但这似乎只允许单一切片,例如A[1:2].那么如何才能执行双索引切片以便我可以调用A[i:j,l:k]?
谢谢!
请注意,__getslice__自2.0版以来不推荐使用.
请考虑以下最小示例:
class Foo:
def __getitem__(self, *args):
print args
f = Foo()
f[1:2,2:4]
Run Code Online (Sandbox Code Playgroud)
这将打印:
((slice(1, 2, None), slice(2, 4, None)),)
Run Code Online (Sandbox Code Playgroud)
如果您查看数据模型文档,您将看到slice对象是:
...用于在使用扩展切片语法时表示切片.特殊的只读属性:
start是下限;stop是上限;step是步骤值;None如果省略则各自.这些属性可以是任何类型.
从这里开始,应该非常清楚如何实现2索引切片处理.