Ошибка типа: объект ‘numpy.ndarray’ не вызывается, для сравнения двух строк

#python #numpy #similarity

#python #numpy #сходство

Вопрос:

Я попытался сравнить две нанесенные линии. Сначала я загрузил два файла данных и назначил x и y, а затем попытался выровнять точки на осях x. Однако выскочила ошибка:

Обратная трассировка (последний последний вызов): Файл «/Users/ renzha /Documents/ сравнить два lines.py «, строка 33, в xnew = data1[:,0] ( min(x), max(x), num = points) TypeError: объект ‘numpy.ndarray’ не вызывается

Исходный код:

 import numpy as np
from scipy.interpolate import interp1d
import matplotlib.pyplot as plt
import scipy.spatial.distance as ssd 
import scipy.stats as ss
data1 = np.loadtxt(filedialog.askopenfilename(), delimiter='t')
data2 = np.loadtxt(filedialog.askopenfilename(), delimiter='t')
x = data1[:,0]
y = data1[:,1]
x2 = data2[:,0]
y2 = data2[:,1]
f = interp1d(x, y)
f2 = interp1d(x2,y2)
points = 150
xnew = data1[:,0] ( min(x), max(x), num = points) 
xnew2 = data2[:,0] ( min(x2), max(x2), num = points) 
ynew = f(xnew) 
ynew2 = f2(xnew2) 
plt.plot(x,y, 'r', x2, y2, 'g', xnew, ynew, 'r--', xnew2, ynew2, 'g--')
plt.show()
print (ssd.correlation(ynew, ynew2))
print (np.correlate(ynew, ynew2, mode='valid'))
print (np.corrcoef(ynew, ynew2)) 
print (ss.spearmanr(ynew, ynew2)) 
  

Ответ №1:

Как указано в ошибках, ваши данные data1[:,0] и data2[:,0] массивы numpy. Я предполагаю, что вы пытаетесь применить функцию с параметрами ( min(x), max(x), num = points) , проверьте еще раз код, чтобы увидеть, какая функция должна там использоваться. Возможно, может помочь просмотр имени параметров numpy.linspace(start, stop, num= ...) .

https://numpy.org/doc/stable/reference/generated/numpy.linspace.html#numpy.linspace