我正在尝试使用函数InterX来查找两条曲线的交点,但是我总是遇到相同的错误TypeError:“模块”对象不可调用。无论我将哪种数据引入函数中。

该功能可以在https://github.com/kelseynlucas/InterX.git中找到

在功能描述中,作者说:
InterX曲线的交点

输入:
   -L1x-曲线1的x值的熊猫数据框
   -L1y-曲线1的y值的Pandas数据框
可选输入:
   -L2x-曲线2的x值的熊猫数据框
   -L2y-曲线2的y值的Pandas数据框
因此,我为名为“ Line”的直线的x和y值创建了一个数据框,为名为“ Curve”的曲线创建了一个数据框,并使用了该函数。

但是,即使我将DataFrame或数组或数据手动引入函数中,我也始终会遇到相同的错误。

import numpy as np
import pandas as pd
import InterX

x_t = np.linspace(0, 10, 10, True)
z_t = np.array((0, 0, 0, 0, 0, 0, 0.055, 0.41, 1.23, 4))
X_P = np.array((2,4))
Z_P = np.array((3,-1))

Line = pd.DataFrame(np.array((X_P,Z_P)))
Curve = pd.DataFrame(np.array([x_t,z_t]))
Curve = Curve.T
P = InterX(Line[0],Line[1],Curve[0],Curve[1])


我期望输出P = [3.5,0]。但是我总是有相同的错误:

第22行,在
    P = InterX(x_t,z_t,X_P,Z_P)

TypeError:“模块”对象不可调用

最佳答案

不幸的是,模块名称和内部的功能具有相同的名称,当您编写P = InterX(...时,您调用的是模块,而不是模块中的函数,这会导致错误。

采用:

from InterX import InterX
...
P = InterX(Line[0],Line[1],Curve[0],Curve[1])


要么

import InterX
...
P = InterX.InterX(Line[0],Line[1],Curve[0],Curve[1])


要么

import InterX as interX
...
P = interX.InterX(Line[0],Line[1],Curve[0],Curve[1])

关于python - 使用InterX函数转换为python时发生模块错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57080389/

10-12 17:56