Python - 从3x3 NP阵列中拾取随机列或行

时间:2014-04-03 21:54:03

标签: python-3.x random numpy

我使用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]。

非常感谢你,祝你有个美好的一天。

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)