方法1:错误:ufunc'添加'没有包含签名匹配类型dtype的循环('
x = numpy.array(x)
x_5= x + 5
方法2:错误:必须是str,而不是int
x_5 = [x+5 for x in x]
方法3:错误:基数为10的int()的文字无效:' -0.081428368' 我试图将x数据首先转换为整数
x_int = list(map(int, x))
x_5 = [x+5 for x in x]
方法4:错误:' numpy.float64'对象不可迭代
x = numpy.array(x, dtype=float)
x = numpy.array(x)
x_piu_5= x + 5
方法5:错误:浮动对象不可迭代
x_piu_5=[]
xfl=[float(i) for i in x]
x_piu_5[:] = [x + 5 for x in xfl]
大家好
我想在我的列表中添加一个整数,其中包含很多数字,如0.00085695等,我使用了两种方法但是我没有成功
更新1:添加方法4,我已经获得了我想要的值,但现在的问题是它说numpy.float不可迭代
更新2:添加方法5,我应该在迭代之前将float转换为字符串吗?
答案 0 :(得分:3)
问题的核心是您的列表x
包含字符串,代表浮点数字。您需要将这些字符串转换为float
个对象。
更确切地说:
方法1 可以使用dtype=float
修复,如评论中所示:
x = numpy.array(x, dtype=float)
x_5 = x + 5
方法2 可以通过在添加5之前将x
的项目转换为浮点值来修复:
x_5 = [float(i) + 5 for i in x]
方法3 可以使用float
代替int
来修复,因为您的值不是整数而是浮点值:
x_float = list(map(float, x))
x_5 = [i + 5 for i in x_float]
请注意,此解决方案与方法2相同,只是稍微慢一些,占用空间更多,因为您正在创建其他列表。
方法4 可以通过删除虚假x = numpy.array(x)
行来修复。最终将使用与方法1相同的代码。
至于方法5 ,我怀疑x
不是通常的列表,而是浮动对象。
除了将值转换为正确的类型之外,您应该尝试的另一件事是为不同的事物使用不同的变量名称。在您的代码段中,您将x
用于列表/数组以及这些列表的元素。虽然并不总是严格要求,但使用不同的变量名称可以解决很多困惑,让您免于许多麻烦!