IndexError: индекс n находится за пределами оси 1 с размером n - PullRequest
0 голосов
/ 06 августа 2020

У меня пустая матрица M.shape:

(179, 179)

Теперь я хочу заполнить ее, используя следующий l oop:

for game in range(len(games)-1):

    df_round = df_games_position[df_games_position['rodada_id'] == games['rodada_id'][game]]
    players_home = df_round[df_round['time_id'] == games['time_id'][game]]
    players_away = df_round[df_round['time_id'] == games['adversario_id'][game]]
    
    count=0
    for j_home in range(len(players_home)):
        count_fora=0
        for j_away in range(len(players_away)):
            score_home = 0
            score_away = 0
            
            points_j_home = players_home['points_num'].iloc[j_home]
            points_j_away = players_away['points_num'].iloc[j_away]
            print ('POINTS HOME',points_j_home)
            print ('POINTS AWAY',points_j_away)
            
            soma =  points_j_home + points_j_away 
            if soma != 0:
                score_home = points_j_home / soma
                score_away = points_j_away / soma
                print ('SCORE HOME', score_home)
                print ('SCORE AWAY',score_away)
            
            j1 = players_home['Rank'].iloc[j_home].astype('int64')
            j2 = players_away['Rank'].iloc[j_away].astype('int64')
            print ('j1',j1)
            print ('j2',j2)
                
            M[j1,j1] = M[j1,j1] + games['goals_home_norm'][game] + score_home
            M[j1,j2] = M[j1,j2] + games['goals_away_norm'][game] + score_away
            M[j2,j1] = M[j2,j1] + games['goals_home_norm'][game] + score_home
            M[j2,j2] = M[j2,j2] + games['goals_away_norm'][game] + score_away
            
            print (M)
            
            count+=1
            print ('COUNT', count)

Наконец я получаю сообщение об ошибке:

M[j1,j2] = M[j1,j2] + games['gols_fora_norm'][game] + score_home
IndexError: index 179 is out of bounds for axis 1 with size 179

Моя последняя итерация отпечатков:

COUNT 3
SCORE HOME 0.0
SCORE AWAY 0.0
j1 7
j2 162
[[0.         0.         0.         ... 0.         0.         0.        ]
 [0.         0.         0.         ... 0.         0.         0.        ]
 [0.         0.         0.         ... 0.         0.         0.        ]
 ...
 [0.         0.         0.         ... 0.         0.         0.        ]
 [0.         0.         0.         ... 0.         0.         0.        ]
 [0.         0.         0.         ... 0.         0.         8.57263145]]
COUNT 4
SCORE HOME 0.0
SCORE AWAY 0.0
j1 7
j2 179

Что мне не хватает?

1 Ответ

0 голосов
/ 06 августа 2020

Матрица numpy array, а index для нее начинается с 0, а не с 1

np.array([1,2,3,4]).shape
Out[29]: (4,)
np.array([1,2,3,4])[3]
Out[30]: 4

Мы можем просто исправить это, создав пустую M с формой (180,180)

M = M[1:,1:]
...