我想得到每輪每支球隊得分的總和,目前我可以從第一輪得到每支球隊得分的總和。
電流輸入
scores = np.array([
[1, 2, 2, 3, 5, 8, 12], #Round 1
[11, 3, 9, 2, 3, 5, 10]] # Round 2
)
teams = np.array([[0, 1, 2], [1, 2, 3], [6, 5, 4]])
np.sum(np.take(scores, teams), axis=1)
這將為第一輪中的每個團隊輸出正確的總和
array([ 5, 7, 25])
有沒有辦法讓它在每輪中輸出每個團隊的總和而不使用 for 回圈?
期望的輸出
array([[ 5, 7, 25], [23, 14, 18]])
uj5u.com熱心網友回復:
您可以添加axis=1到np.take,然后在軸上求和2:
>>> np.take(scores, teams, axis=1).sum(axis=2)
array([[ 5, 7, 25],
[23, 14, 18]])
uj5u.com熱心網友回復:
您沒有指定軸,因此take,如檔案所述,可與展平陣列一起使用:
In [216]: np.take(scores.ravel(),teams)
Out[216]:
array([[ 1, 2, 2],
[ 2, 2, 3],
[12, 8, 5]])
用于teams索引列:
In [220]: scores[:,teams]
Out[220]:
array([[[ 1, 2, 2],
[ 2, 2, 3],
[12, 8, 5]],
[[11, 3, 9],
[ 3, 9, 2],
[10, 5, 3]]])
和總結:
In [221]: scores[:,teams].sum(axis=2)
Out[221]:
array([[ 5, 7, 25],
[23, 14, 18]])
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/429374.html
