これはスタックオーバーフローで打ち負かされたようですが、どの質問も私の問題に一致していないようです。とにかく、コードにまっすぐ。
これはEdge.pyです
from __future__ import division
import sys
from numpy import *
class EdgeList:
def __init__(self, mat):
self.id1 = mat[:,0]
self.id2 = mat[:,1]
self.value = mat[:,2]
def is_above(self):
return self.value>average(self.value)
def stats(self):
pass #omitted; too long and irrelevant here.
これはAHsparse.pyです
from __future__ import division
import sys
from numpy import *
from Edge import EdgeList
class AHvector:
def __init__(self, mat):
self.el = EdgeList(mat)
def multiply(self, other):
v=zeros(max(len(self.el.val), len(other.el.val)))
for index in self.id1:
v[index] = self.el.val[index] * other.el.val[index]
return v
これはいくつかのテストコードです (他のテストはパスします)
import sys
from numpy import *
from Edge import EdgeList
from AHsparse import AHvector
testmat =loadtxt('test.data', delimiter=';')
st = EdgeList(testmat)
stv = AHvector(st)
stv = stv.multiply(stv)
print(stv)
エラーはクラス AHvector のinitメソッドで発生しますが、Edge.py にコールバックします。
Traceback (most recent call last):
File "/Users/syntaxfree/Dropbox/nina/nina lives in objects/sparse_test.py", line 8, in <module>
stv = AHvector(st)
File "/Users/syntaxfree/Dropbox/nina/nina lives in objects/AHsparse.py", line 9, in __init__
self.el = EdgeList(mat)
File "/Users/syntaxfree/Dropbox/nina/nina lives in objects/Edge.py", line 7, in __init__
self.id1 = mat[:,0]
AttributeError: EdgeList instance has no attribute '__getitem__'
[Finished in 0.6s with exit code 1]
他に追加することはありませんが、残念ながら、EdgeList を独自に初期化し、他のテスト コードで stats メソッドを実行できることを除けば、なぜこれが機能しないのか完全に混乱しています。