为了账号安全,请及时绑定邮箱和手机立即绑定

循环遍历 numpy 矩阵元素

循环遍历 numpy 矩阵元素

慕仙森 2021-10-12 17:29:38
我有以下矩阵,其中每个元素代表特定得分线的概率。 y 轴是主队的进球数,x 轴是客队的进球数。例如,0-0 的得分线是 1.21,而 4-3 的得分线是 0.84。我知道主场获胜的概率等于   np.sum(np.tril(match_score_matrix, -1))抽签的概率等于:   np.sum(np.diag(match_score_matrix))损失的概率等于:   np.sum(np.triu(match_score_matrix, 1)),现在,我想知道每个进球差异的概率。在这个矩阵中,以下目标差异结果是可能的 [-6, -5, ..., 0, ..., 15)。如何编写一个循环来计算每个结果的概率?def get_probabilities(match_score_matrix, max_goals_home, max_goals_away):    return dict({'max_goals_away': np.something,                 '-5', np.something,                 '-4', np.something,                 ...                  '0', np.diag(match_score_matrix)),                 '1', np.something                 ...                 'max_goals_home', np.something })如何在易于使用的循环中编写它?先感谢您!
查看完整描述

2 回答

?
四季花海

TA贡献1811条经验 获得超5个赞

考虑使用 偏移在np.diagonal。因为对角线是当主客队之间的进球数相等时,向上偏移是客队比主队高一球时的概率。相反,当主队比客队高一球时,向下偏移是概率。因此,将两个概率相加。


# AWAY ONE GOAL HIGHER

np.sum(np.diagonal(match_score_matrix, offset=1))    

# HOME ONE GOAL HIGHER

np.sum(np.diagonal(match_score_matrix, offset=-1))


# AWAY TWO GOALS HIGHER

np.sum(np.diagonal(match_score_matrix, offset=2))    

# HOME TWO GOALS HIGHER

np.sum(np.diagonal(match_score_matrix, offset=-2))

...


# AWAY MAX GOALS HIGHER USING array.shape

np.sum(np.diagonal(match_score_matrix, offset=match_score_matrix.shape[0]))

# HOME MAX GOALS HIGHER USING array.shape

np.sum(np.diagonal(match_score_matrix, offset=-match_score_matrix.shape[0]))

对于您需要的字典,请使用字典理解


def get_probabilities(match_score_matrix, max_goals_home, max_goals_away):


    # DICTIONARY COMPREHENSION 

    return {str(i): np.sum(np.diagonal(match_score_matrix, offset=i)) for i in range(-15,15)}



查看完整回答
反对 回复 2021-10-12
?
慕斯王

TA贡献1864条经验 获得超2个赞

您可以使用np.diag提取第k-th 对角线,然后将其求和。

{str(i):np.sum(np.diag(match_score_matrix,k=i)) for i in range(-15,8)}


查看完整回答
反对 回复 2021-10-12
  • 2 回答
  • 0 关注
  • 247 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号