【问题标题】:TypeError: 'numpy.ndarray' object is not callable, for comparing two linesTypeError:“numpy.ndarray”对象不可调用,用于比较两行
【发布时间】:2020-09-30 13:27:52
【问题描述】:

我试图比较两条绘制的线。我首先加载两个数据文件并分配 x 和 y,然后尝试将 x 轴上的点对齐。但是,弹出一个错误:

Traceback(最近一次调用最后一次): 文件“/Users/renzha/Documents/compare twolines.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)) 

【问题讨论】:

    标签: python numpy similarity


    【解决方案1】:

    正如错误所说,您的 datadata1[:,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

    【讨论】:

      猜你喜欢
      • 2017-08-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-23
      • 1970-01-01
      • 2019-05-09
      • 2020-11-13
      • 2019-04-07
      相关资源
      最近更新 更多