首页 > 解决方案 > Numpy:使用 .max 更改二维数组中的数字

问题描述

我正在尝试使用 NumPy 的 2D 数组创建一个简单的 connect-4 游戏,这个想法是当玩家选择一列时,它将用一块替换该列中的最大数字

import numpy as np

R_count = 6
C_count = 7

M1 = ([[0,0,0,0,0,0,0],[1,1,1,1,1,1,1],[2,2,2,2,2,2,2],[3,3,3,3,3,3,3],[4,4,4,4,4,4,4],[5,5,5,5,5,5,5]])

def M2():
    mymatrix = np.array(M1)
    return mymatrix
Board = M2()

def drop_piece(Board,row,col,piece):
    np.max(Board[row][col]) = piece

但是当我使用 np.max 函数将数字替换为一块时,该函数会报错:

    np.max(Board[row][col]) = piece        
    ^
SyntaxError: cannot assign to function call

是否有任何解决方案,或者我无法使用函数更改列中的最大数字?

标签: pythonnumpymultidimensional-array

解决方案


np.max 的输出是一个标量值,而不是您的矩阵。你想使用 np.argmax。这将输出最大值的位置(或位置列表,如果有的话)。

您可以使用以下代码来实现所需的行为:

pos=np.argmax(Board[:,col].squeeze())
Board[pos,col]=piece

推荐阅读