#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