我目前正在使用包含大量“INF'”的数据集。那些搞砸我计算的价值观。我试图删除这些值,但我一直无法找到使用2D数组执行此操作的方法。我的一些代码如下:
def date2str(date_str):
date = datetime.strptime(date_str, '%Y-%m-%d %H:%M:%S')
return date.toordinal()
def readfiles(file_list):
data = []
for fname in file_list:
data.append(
np.loadtxt(fname,
usecols=(0,18),
comments='#', # skip comment lines
delimiter='\t',
converters = { 0 : date2str },
dtype=None))
return data
data = readfiles(['soundTransit1_remote_rawMeasurements_15m.txt'])
print data
data = data[np.isfinite(data)]
np.set_printoptions(threshold='nan')
column_0 = np.array(data)[0][:,0]
column_1 = np.array(data)[0][:,1]
thermTemp1_degC = 1/(1.401E-3 + 2.377E-4*np.log(column_1) + 9.730E-8*np.log(column_1)**3)-273.15
我已经阅读了两个列(一个包含数据,另一个包含相关的日期和时间)并将它们分开,以便我可以操作数据(在我的代码的最后一行)。我需要能够跳过包含' INF'的数据行。我当前的解决方案' data = data [np.isfinite(data)]无效。我收到错误' TypeError:只有一个元素的整数数组可以转换为索引'。谁能给我一些指导?
答案 0 :(得分:1)
你的函数readfiles
返回一个python列表,而不是一个numpy数组。 Python列表不能使用numpy的布尔数组之一进行索引,这就是为什么你得到data[np.isfinite(data)]
的错误; data
是一个python列表,但是np.isfinite(data)
是一个布尔值的numpy数组。
从readfiles
返回一个numpy数组,类似
return np.array(data)
或在尝试使用numpy的布尔索引之前将结果转换为数组:
data = np.array(data)
data = data[np.isfinite(data)]
您可能需要按一下按钮才能获得具有所需形状的阵列。