我正在使用numpy模块检索二维数组中最大值的位置。但是这个2d数组由MyObjects组成。现在我收到了错误:
TypeError:unorderable类型:int()>为MyObject()
我尝试使用以下代码覆盖int函数:
def int(self):
return self.score
但这并不能解决我的问题。 我是否必须将我的2d MyObjects数组转换为2d整数数组,是否必须扩展Integer对象(如果在python中可以这样做)或者我可以用其他方式覆盖这个int()函数吗?
[编辑]
完整的对象:
class MyObject:
def __init__(self, x, y, score, direction, match):
self.x = x
self.y = y
self.score = score
self.direction = direction
self.match = match
def __str__(self):
return str(self.score)
def int(self):
return self.score
我称这个对象的方式:
def traceBack(self):
self.matrix = np.array(self.matrix)
maxIndex = self.matrix.argmax()
print(self.matrix.unravel_index(maxIndex))
答案 0 :(得分:9)
尝试使用
...
def __int__(self):
return self.score
...
test = MyObject(0, 0, 10, 0, 0)
print 10+int(test)
# Will output: 20
在MyObject类定义中。
答案 1 :(得分:1)
max
函数需要在元素上应用key
。这就是你放score
通常:
a = max(my_list, key=score)