我有下面的矩阵,其中每个元素代表一个特定分数的概率。

主队的进球数在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 })我如何在一个易于使用的循环中写这个呢?提前谢谢你!
发布于 2019-01-16 21:34:37
考虑在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)}发布于 2019-01-16 21:29:16
您可以使用np.diag提取k-th对角线,然后对其进行求和。
{str(i):np.sum(np.diag(match_score_matrix,k=i)) for i in range(-15,8)}https://stackoverflow.com/questions/54225235
复制相似问题