0
私は既にこのquestionを尋ねましたが、これを実装する方法をまだ理解できません。m [1:3、0:2] + = 1のようなサブマトリックスのためのインターフェイスを実装する方法は?
私は行列クラスを持っている:
class Matrix(list):
def __getitem__(self, item):
try:
return list.__getitem__(self, item)
except TypeError:
rows, cols = item
return [row[cols] for row in self[rows]]
それはこのようなことを行うことができます:
m = Matrix([[i+j for j in [0,1,2,3]] for i in [0,4,8,12]])
print(m[0:2, 0:2])
will print: [[0, 1], [4, 5]]
私も同じように、与えられた値を乗算/全ての部分行列の要素を追加できるようにしたいです:
m[0:2, 0:2] += 1
print(m[0:2, 0:2])
should print: [[1, 2], [5, 6]]
私はそれらのメソッドを実装しようとしています:211232、__add__
を10
def __setitem__(self, key, value):
print(key, value)
def __add__(self, item):
print(item)
for i in range(self):
for j in range(self[0]):
self[i][j] += item
少なくとも、私は何かを印刷したいと思っています。しかし、それは起こりません。
m[1:2, 2:3] = m[1:2, 2:3] + 1
をなどのエラーが表示されます。:私は、そのような例をしようとしているTypeError: can only concatenate list (not "int") to list
。
私は魔法の方法でさえもありません。前に呼び出しが失敗します。これを行う方法?
からMatrixオブジェクトを返すことがありますか? – shx2
@ shx2研究目的 –