我的涉及numpy数组的for循环出现错误

时间:2019-04-08 01:46:50

标签: python numpy

我正在制作游戏,但出现错误:“ IndexError:仅整数,切片(:),省略号(...),numpy.newaxis(None ),并且整数或布尔数组是有效的索引。”

在下面的代码块中,play_game是一个返回字符串的函数,而roll_dice是一个随机数组。基本上,我正在尝试将所有字符串放入数组,因此进入total_games。但是,由于这个错误,我无法做到这一点,我不确定这到底是什么意思。如果有人能弄清错误的含义或我如何解决此代码,将不胜感激。

def game_session(num_games=50):
    total_games = np.zeros(num_games)
    for i in total_games:
        total_games[i] = play_game(roll_dice())
    return total_games

2 个答案:

答案 0 :(得分:1)

.zeros创建一个浮点零数组(0.0)。

当您执行for i in total_games时,i将始终为0.0,显然由于错误消息提示的原因而无法完成total_games[0.0]

我相信您想要的是for i in range(len(total_games)),它将遍历total_games的索引,即0、1、2、3,...。

答案 1 :(得分:1)

您无法将字符串输入到类型np.array的{​​{1}}中,因为此数据结构仅包含一种类型(默认为np.float64,如本例所示)。

您追求的是普通的Python np.float64,请尝试以下代码:

list

@Loocid的答案也是正确的,您的代码存在多个问题。

实际上,您可以(可能应该)像这样使用更多的pythonic:

def game_session(num_games=50):
    total_games = []
    for _ in range(num_games):
        total_games.append(play_game(roll_dice()))
    return total_games