で__rmul__オペレータ、私はクラスを作成し、私はこの新しいクラスと実際の行列間の動作を必要とするので、私はこのアレイおよびプロジェクトでPythonのnumpyの
class foo(object):
aarg = 0
def __init__(self):
self.aarg = 1
def __rmul__(self,A):
print(A)
return 0
def __mul__(self,A):
print(A)
return 0
が、ときのように__rmul__
機能を過負荷に私は
0
0
0
1
0
2
:私はそれを呼ばれ、結果は私が
A = [[i*j for i in np.arange(2) ] for j in np.arange(3)]
A = np.array(A)
R = foo()
C = A * R
出力を期待したものではなかったです関数が各要素に対して1回、6回呼び出されるようです。
代わりに、__mul__
機能が大幅に機能
C = R * A
出力:
[[0 0]
[0 1]
[0 2]]
A
が配列ではなく、リストのリストだけならば、両方の罰金
A = [[i*j for i in np.arange(2) ] for j in np.arange(3)]
R = foo()
C = A * R
C = R * A
を働きます
出力
[[0, 0], [0, 1], [0, 2]]
[[0, 0], [0, 1], [0, 2]]
実際に私の__rmul__
関数が配列に対しても機能したいと思います(私の元の乗算関数は可換ではありません)。どうすれば解決できますか?
「A」の種類を確認するにはどう思いますか? –