我试图将列表中的浮点数近似为标量整数值。也就是说,我试图将小于0.5的值转换为0,并且将大于或等于0.5的值转换为1。但是我得到了一个错误
我的列表的值如下所示:
0.2943,
0.3483,
0.3359,
0.3671,
0.6788,
1,
0.779
预期产出:
0,
0,
0,
0,
1,
1,
1
编写的代码:
listSample = []
listSample = list(y_predAN_PCA)
for i in listSample:
if listSample[i] < 0.5:
listSample[i] = 0
else:
listSample[i] = 1
但我得到了以下错误:
类型错误:只有整数标量数组可以转换为标量索引
你已经得到了别人的答案。如果使用第三方库没有问题,可以使用NumPy阵列的掩蔽。对于这样一个小的例子来说,这是一种过分的做法,但知道选择还是很好的
说明:
lst<0.5
返回值小于0.5的数组索引。然后将其作为索引传递给数组lst
作为lst[lst<0.5]
,并重新分配这些值0
。类似地,检查大于等于0.5的值并将其重新指定为1如Jon Clements所建议的另一种更好的方法是使用np.where。在这里,首先指定条件(
lst<0.5
在这里)。如果条件为True
,则该条件后的第一个值将分配给数组元素。如果条件为False
,则将分配第二个值您正在迭代项而不是项索引;使用
enumerate
获取以下两种:更好的方法是使用
round
和列表理解:或者,如果您正在使用NumPy:
注意:这将使0.5向下取整为0(“银行家取整”),并返回浮动列表。更接近您的代码(对于正数)的是:
您在代码片段中错误地使用了for循环。在您的代码中,i引用了列表中的第i个值,而不是第i个索引。下面的代码可能会有所帮助
range函数将根据列表的长度生成索引
相关问题 更多 >
编程相关推荐