TypeError:unorderable类型:float()<功能()

时间:2012-03-10 23:47:46

标签: python function numpy

我有一个由两个函数组成的代码,一个用于读取数据,另一个用于计算数据。两个函数在单独运行时运行正常,但是当我尝试让计数器调用文件阅读器时,我收到错误。如果有人可以告诉我在哪里搞砸,我将不胜感激。提前致谢

错误

File "C:\Documents and Settings\Read_File.py", line 50, in counter
Sx = ((25. < Xa) & (Xa < 100.)).sum()    #count what is in x range
TypeError: unorderable types: float() < function()

代码

for line in f:        #Loop Strips empty lines as well as replaces tabs with space
if line !='':    
  line = line.strip()
  line = line.replace('\t',' ')
  columns = line.split()
  for line in range(N):       #Loop number of lines to be counted
   x = columns[8]             # assigns variable to columns
   y = columns[18]
   z = columns[19]
   #vx = columns[]
   #vy = columns[]
   #vz = columns[]
   X.append(x)
   Y.append(y)                #appends data in list
   Z.append(z)

 Xa = numpy.array(X, dtype=float)                   #Converts lists to NumPy arrays
 Ya = numpy.array(Y, dtype=float)
 Za = numpy.array(Z, dtype=float)



 return(Xa,Ya,Za)         #returns arrays/print statement to test 


def counter(Xa):
 Sx = ((25. < Xa) & (Xa < 100.)).sum()    #count what is in x range
 Sy = ((25. < Ya) & (Ya < 100.)).sum()    #count what is in y range
 Sz = ((25. < Za) & (Za < 100.)).sum()    #count what is in z range

 return(print(Sx,Sy,Sz))

read_file(F)                              #function calls 
counter(read_file)

修改

在列夫和詹姆斯的帮助下,第一个问题得到解决,现在我得到了这个错误

  Sx = ((2. < Xa) & (Xa < 10.)).sum()    #count what is in x range
  TypeError: unorderable types: float() < tuple()

这是因为数组中的逗号吗?如果是这样,我怎么能解决这个问题?

2 个答案:

答案 0 :(得分:2)

您正试图在函数counter() 上调用read_file(),而不是调用read_file(F)的结果。您没有包含read_file()的来源,但您几乎肯定想要这样做:

counter(readfile(F))

而不是最后两行。 (顺便说一下,result(print(...))中的counter()可能不需要return包围其余部分。)

答案 1 :(得分:1)

下面:

    Sx = sum(item for item in Xa if 25. < item < 100.)

......依此类推。

基本上,您正在遍历Xa中的每个项目,并省略那些不属于该范围的项目。然后你要总结它们。

P上。 S.您收到错误,因为float()和tuple()类型没有定义的比较函数。