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]]
我想實現這些方法:__add__
,__setitem__
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
。
所以,我甚至沒有魔法。呼叫失敗之前。這個怎麼做?
你爲什麼要重塑numpy的? – shx2
@ shx2學習目的 –