我使用numPy设置了3x3网格。
grid = np.array([[1,2,3],
[4,5,6],
[7,8,9]])
我可以让用户输入特定位置的内容([1,1])在这个特定的例子中位于“5”位置:
grid[1,1] = input ("Place a number inside")
我的问题是:我怎么能设置一些选择RANDOM行/列的内容供玩家输入而不是我告诉它“好吧把它放到位[1,1]。
非常感谢你,祝你有个美好的一天。
答案 0 :(得分:1)
简单的情况下,使用np.random.randint(0, 3, 2)
在0到3之间创建两个随机数。然后,如果将数组转换为tuple
,则可以使用它来索引数组:
rand_point = np.random.randint(0, 3, 2)
grid[tuple(rand_point)] = input("Place a number at %s: " % rand_point)
或者您可以单独生成两个数字(如果您的数组不是正方形,这将非常重要):
nrows, ncols = grid.shape #shape tells us the number of rows, cols, etc
rand_row = np.random.randint(0, nrows)
rand_col = np.random.randint(0, ncols)
grid[rand_row, rand_col] = input("Place a number at [%d, %d]: " % (rand_row, rand_col))
如果你想获得幻想,你可以在一行中自动执行此操作,而无需拨打randint
两次,即使ncols != nrows
:
rand_point = tuple(np.random.random(grid.ndim)*grid.shape)
grid[rand_point] = input("Place a number at [%d, %d]: " % rand_point)