Python TypeError:列表索引必须是整数,而不是numpy.float64

Python TypeError:列表索引必须是整数,而不是numpy.float64,python,list,integer,Python,List,Integer,我从csv文件中有两个列表,我只想从其中减去。错误消息指示我将列表项转换为整数,但它们不是整数。我试着将它们转换成浮点数、整数等,但都不起作用 如何查找列表当前包含的数据类型?不能在列表中使用浮动项进行计算吗?我做错了什么 打印的列表(似乎是不同的数据类型): 我的代码: from pylab import * import csv from scipy import stats import numpy as np mymin = [] # create a new array data_W

我从csv文件中有两个列表,我只想从其中减去。错误消息指示我将列表项转换为整数,但它们不是整数。我试着将它们转换成浮点数、整数等,但都不起作用

如何查找列表当前包含的数据类型?不能在列表中使用浮动项进行计算吗?我做错了什么

打印的列表(似乎是不同的数据类型):

我的代码:

from pylab import *
import csv
from scipy import stats
import numpy as np

mymin = [] # create a new array
data_WL1 = [ float(x) for x in data_WL ] # convert items to float

for i in arange(0,len(data_WL)- (0.5 * movAvWindow),1):   
    mymin.append=((data_WL1[i]) - (res_movAvWL[i])) # data_WL - movAvWL;     detrended peak flood data
    res_WLnet = mymin[:] # create a new array which has the same items as mymin

    if int(res_WLnet[i]) < 0.8: # if netWL smaller than 0.8m print 0 in list res_WLnet, etc.
        res_WLnet.append(0)
    else:
        if int(mymin[i]) < 1.10:
            res_WLnet.append(1)
        else:
            res_WLnet.append(2)

print res_WLnet
从pylab导入*
导入csv
从scipy导入统计信息
将numpy作为np导入
mymin=[]#创建一个新数组
数据_WL1=[数据_WL中x的浮点(x)]#将项目转换为浮点
对于arange中的i(0,len(数据)-(0.5*movAvWindow),1):
mymin.append=((data_WL1[i])-(res_movAvWL[i]))(data_WL-movAvWL;去趋势洪峰数据
res_WLnet=mymin[:]#创建一个与mymin具有相同项的新数组
如果int(resu WLnet[i])<0.8:#如果netWL小于0.8m,则在列表resu WLnet中打印0,以此类推。
res_WLnet.append(0)
其他:
如果int(mymin[i])<1.10:
res_WLnet.append(1)
其他:
res_WLnet.append(2)
打印资源

谢谢大家!

试着打印mymin,我打赌它是空的

您需要从此行中删除“=”

mymin.append=((data_WL1[i]) - (res_movAvWL[i]))
并将其替换为

mymin.append(data_WL1[i] - res_movAvWL[i])
备注:

  • 您的数据列表需要像以前一样转换为float,因为它最初是一个字符串列表(请注意引号)

  • 我不知道什么是movAvWindow,如果它是一个数字就可以了,但是如果它是一个列表,请确保您没有将它与浮点相乘,使用

    镜头(移动窗口)*0.5

相反

  • 如果要检查所有类型,列表可能包含不同类型的值,请使用:

    集合([为列表中的x键入(x)])


事实上,如果你把它倒过来,列表中可以包含你想要的任何内容。但您必须使用整数访问它们。问题在于:

for i in arange(0,len(data_WL)- (0.5 * movAvWindow),1):   
    mymin.append=((data_WL1[i]) - (res_movAvWL[i]))
您正在使用
i
访问列表的索引,但是请注意,在确定
i
应该迭代的范围时,您使用了一个浮点。这引入了尝试访问
数据的可能性。\u WL1[0.5]
(您可能实际上得到了不同的结果)


根据您对该范围的具体意图,您可能希望使用
int(len(data_WL)-(0.5*movAvWindow))
来确保
i
以整数递增。

请尽量坚持在每篇文章中问一个问题。我回答了你的错误。更清楚的是,可以在列表中使用浮动进行计算。很好。要找出某物的类型,请使用
isinstance(var,type)
。请参阅,以获得关于它的深入信息。非常感谢您,这两个建议使我走上了解决问题的轨道。为了未来,一次一个问题。
for i in arange(0,len(data_WL)- (0.5 * movAvWindow),1):   
    mymin.append=((data_WL1[i]) - (res_movAvWL[i]))