Numpy isclose для массивов - TypeError: не реализовано для этого типа - PullRequest
0 голосов
/ 05 июня 2019

У меня есть 2 листа .csv (.tsv), которые я загружаю в массивы. Теперь я хочу сравнить каждую ячейку этих двух массивов с помощью функции numpy isclose.

Он работает с обычными числами, но не с моими массивами.

with open(filename) as csv_file:
    reader = csv.reader(csv_file, delimiter='\t')
    for row in reader:
        point.append(row[0])

with open(filename2) as csv_file:
    reader = csv.reader(csv_file, delimiter='\t')
    for row in reader:
        point2.append(row[0])

print(numpy.isclose(point,point2, atol=0.01))

Ошибка:

print(numpy.isclose(point,point2, atol=0.01))
  File "C:\Python27\lib\site-packages\numpy\core\numeric.py", line 2306, in isclose
    xfin = isfinite(x)
TypeError: Not implemented for this type

Даже если я пробую прямые записи из массива (например, точка [3], точка2 [3]), я получу ошибку.

1 Ответ

0 голосов
/ 05 июня 2019

csv.reader читает строки - в итоге вы получите два списка строк.

Возможно, вы захотите привести значения к float (или к чему-то еще, может быть, если вам нужно больше точности), как вычитать строки.

with open(filename) as csv_file:
    reader = csv.reader(csv_file, delimiter='\t')
    point1 = [float(row[0]) for row in reader]

with open(filename2) as csv_file:
    reader = csv.reader(csv_file, delimiter='\t')
    point2 = [float(row[0]) for row in reader]

print(numpy.isclose(point1, point2, atol=0.01))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...