查找行的最大值但错误:类型 '_csv.reader' 的对象没有 len()



我正在尝试结合使用 2 个函数。基本上,我正在尝试导入一个csv文件,该文件是一系列具有我需要的值的行。然后我尝试使用第二个函数"findPeaks"找到每行的最大值。我收到错误,我尝试查看的行没有长度,但它们应该是值数组。我的错误是什么?谢谢你的帮助。

def PSD(pulseData, pulseDataTraining):
import csv;
import numpy as np;
import math
photonTraining = 0; 
with open(pulseDataTraining,'r') as csvfile:
photonTraining = csv.reader(csvfile);
print(photonTraining)
for row in photonTraining:
findPeaks(photonTraining,-30)  
if photonTraining == 0:
print("this is a string")
return np.max(photonTraining)

第二个功能:

def findPeaks(pulse, thresh):
import numpy as np;
import scipy as sp;
peakVal = 0;
for i in range(0,len(pulse)-1):
while(pulse[i]<thresh):
if np.abs(pulse[i]) < np.abs(pulse[i+1]):
peakVal = pulse[i+1];
else:
peakVal = pulse[i];

return peakVal;

更改为以下内容:

def PSD(pulseData, pulseDataTraining):
with open(pulseDataTraining, 'r') as csvfile:
# Create a csv.reader from Filehandle
csvReader = csv.reader(csvfile)
# Create a List of Peak Values per Row from CSV
photonTraining_peak = 
[findPeaks(photonTraining, -30) for photonTraining in csv.reader(csvfile)]
print('row_max:{}'.format(photonTraining_peak),)
return np.max(photonTraining_peak)

您的findPeaks(...将提高

TypeError: unorderable types: str() < int()

更改为

import csv
import numpy as np
def findPeaks(pulse, thresh):
# pulse is Type List of String
sorted_pulse = sorted(pulse, reverse=True)
print(sorted_pulse)
peakVal = 0
for s in sorted_pulse:
v = int(s)
if v < thresh:
if np.abs(peakVal) < np.abs(v):
peakVal = v
else:
break
return peakVal

用 Python 测试:3.4.2

最新更新