首页 > 解决方案 > Numpy isclose for Arrays - TypeError:未为此类型实现

问题描述

我有 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]),我还是会出错。

标签: pythonarrayscsvnumpy

解决方案


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))

推荐阅读