Ошибка типа: неупорядоченные типы: float () <function () - PullRequest
1 голос
/ 11 марта 2012

У меня есть код, состоящий из двух функций, одна из которых читает данные, а другая - их считает. Обе функции работают правильно при отдельном запуске, но я получаю ошибку, когда пытаюсь заставить счетчик вызвать программу чтения файлов. Я был бы признателен, если бы кто-нибудь мог сказать мне, где я обманываю. Заранее спасибо

Error

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)

1010 * РЕДАКТИРОВАТЬ *

С помощью Льва и Джеймса была исправлена ​​первая проблема, теперь я получаю эту ошибку

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

Это из-за запятых в массивах? И если так, как я могу обойти это?

Ответы [ 2 ]

2 голосов
/ 11 марта 2012

Вы пытаетесь вызвать counter() для функции read_file(), а не по результатам вызова read_file(F). Вы не включили источник для read_file(), но вы почти наверняка захотите сделать:

counter(readfile(F))

вместо двух последних строк. (Между прочим, result(print(...)) в counter(), вероятно, не нужно return, обертывающий остальную часть.)

1 голос
/ 11 марта 2012

Здесь:

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

... и т. Д. И т. П.

По сути, вы просматриваете каждый элемент в Xa и пропускаете те, которыепадать с диапазоном.Затем вы суммируете их.

PS Вы получаете ошибку, потому что типы float () и tuple () не имеют определенной функции сравнения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...