TypeError:'int'对象在if语句中不可订阅

时间:2018-04-19 22:15:15

标签: python typeerror

我正在尝试标记我的数据,并且我想标记我的所有数据1或-1。 我有这段代码,以前工作得很好。

#iris-setosa
train_t = df.iloc[0:120, 4].values
validation_t = df.iloc[121: , 4].values

train_t1 = np.where(train_t == 'Iris-setosa', -1, 1)
validation_t1 = np.where(validation_t == 'Iris-setosa', -1, 1)

然后我有另一组数据,他们的标签不是字符串, 所以我把代码更改为:

#iris-setosa
train_t = df.iloc[0:120, 4].values
validation_t = df.iloc[121: , 4].values

classNum = 20
train_t1 = np.where(train_t == classNum, -1, 1)
validation_t1 = np.where(validation_t == classNum, -1, 1)

并且它没有正确标记我的数据,而是将它们全部标记为0!

然后我尝试使用if代替np.where编写代码,如下所示:

#iris-setosa
train_t = df.iloc[0:120, 4].values
validation_t = df.iloc[121: , 4].values

classNum = 20
for i in range (1000):
if (train_t[i] == classNum):
    train_t[i] = 1
else:
    train_t[i] = -1
if (validation_t[i] == classNum):
    validation_t[i] = 1
else:
    validation_t[i] = -1

我收到此错误TypeError: 'int' object is not subscriptable
更新:显然这个错误已经无缘无故了,相反,我的所有数据都标记为-1而不是我想要的结果。

2 个答案:

答案 0 :(得分:0)

您的train_t或者validation_t似乎在某个时刻获得了一个int值。

错误

'int' object is not subscriptable 
使用类似列表的

时会出现

e.g。

x = 5
x[0]
TypeError: 'int' object is not subscriptable

答案 1 :(得分:0)

您可能选择了错误的轴,因为它与您使用'Iris-setosa'时的轴相同。更改轴应该可以解决您的问题。