所以我試圖檢查是否所有可能的排列之一,我會得到一個形式,其中矩陣是對角佔優,但當試圖檢查它時,我得到一個錯誤如何將元組轉換爲整數python
import numpy
from itertools import product
A = numpy.array([[10., -1., 2., 0.],
[2., -1., 10., -1.],
[-1., 11., -1., 3.],
[0.0, 3., -1., 8.]])
def dominance(A):
dominance=True
n=4
sumC=numpy.sum(numpy.absolute(A),axis=0)
sumR=numpy.sum(numpy.absolute(A),axis=1)
resC = [0 for i in range(n)]
resR= [0 for i in range(n)]
for i in range(n):
resC[i]=sumC[i]-A[i,i]
resR[i]=sumR[i]-A[i,i]
if A[i,i]<resC[i] or A[i,i]<resR[i]:
dominance=False
break
return dominance
def permutate(iterable, r=None):
pool = tuple(iterable)
n = len(pool)
r = n if r is None else r
for indices in product(range(n), repeat=r):
if len(set(indices)) == r:
yield tuple(pool[i] for i in indices)
if dominance(A):
print "Es dominante"
else:
for i in permutate(A):
if dominance(list(i)):
print "this way is dominant"
print i
break
這這裏是錯誤
Traceback (most recent call last):
File "Prueba.py", line 37, in <module>
if dominance(list(i)):
File "Prueba.py", line 16, in dominance
resC[i]=sumC[i]-A[i,i]
TypeError: list indices must be integers, not tuple
您不需要「將元組轉換爲整數」,您需要弄清楚爲什麼要在需要整數的地方使用元組。 – TigerhawkT3
'A [我,我]'你不能像那樣索引。使用'A [i] [i]' – hellpanderrr
@hellpanderrr:實際上,您可以並應該使用NumPy數組。問題是這段代碼混合了列表和數組,而沒有理解這兩者之間的區別。 – user2357112