TypeError:'float'对象不能解释为索引

时间:2017-03-29 07:05:02

标签: python deep-learning keras

我正面临一个以前没有发生过的问题,也许某些规则已经改变了。

    Traceback (most recent call last)
    <ipython-input-3-f47687e192a7> in <module>()
          5 n_examples = X.shape[0]
          6 n_train = n_examples * 0.5
    ----> 7 train_idx = np.random.choice(range(0,n_examples), size=n_train, replace=False)
          8 test_idx = list(set(range(0,n_examples))-set(train_idx))
          9 X_train = X[train_idx]

    mtrand.pyx in mtrand.RandomState.choice (numpy/random/mtrand/mtrand.c:18822)()

    TypeError: 'float' object cannot be interpreted as an index

1 个答案:

答案 0 :(得分:5)

问题可能出在Python附带的range函数中。它的论点必须是整数。当n_train乘以n_examples时,0.5会变为浮点数。您只需将其重新转换为类似int(n_examples * 0.5)的int。这实际上是正确的做法。如果您有11个示例,那么使用5.5培训和测试示例是没有意义的。