在 Python 中的图表(向量)上查找特定点

Find a specific point on diagram (vectors) in Python

我是 Python 的新手,我想在我的图表上找到一个特定的点。
我有向量 IV,我想在 I=0.
时找到 V 在 MATLAB 中,我使用的是插值法:

Voc=interp1(I,V,0)

在Python中,我试过:

Voc=interp(0,I,V)

但它给了我数组的最后一个值不在 I=0

图表可在以下 link 上找到(由于信誉不佳且在本网站上是新手,我无法 post 图片)并且我已突出显示我需要的点。

Diagram picture

V=[ 0. 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69]

I= [ 9.01984039 9.01984037 9.01984034 9.01984032 9.01984029 9.01984027 9.01984024 9.01984022 9.01984019 9.01984016 9.01984013 9.0198401 9.01984006 9.01984002 9.01983998 9.01983992 9.01983984 9.01983974 9.01983961 9.01983942 9.01983915 9.01983877 9.01983822 9.01983742 9.01983625 9.01983454 9.01983202 9.01982831 9.01982286 9.01981482 9.01980297 9.01978549 9.01975972 9.01972169 9.0196656 9.01958284 9.01946072 9.01928054 9.01901468 9.01862239 9.01804353 9.01718937 9.01592898 9.01406917 9.01132483 9.00727528 9.00129976 8.99248227 8.97947117 8.96027195 8.93194151 8.89013703 8.8284502 8.73742489 8.60310762 8.40490856 8.1124453 7.68088544 7.04407411 6.10439296 4.71779596 2.67172827 -0.34745683 -4.80257758 -11.37657036 -21.07717858 -35.3914322 -56.51359815 -87.6815449 -133.67308323]

提前致谢

请尝试:

import numpy
V0 = numpy.interp(0, I, V)

此外,您的数据必须经过排序才能使 interp 正常工作:

dataset = zip(I,V)
dataset = sorted(dataset, key=lambda data: data[0])
Isorted = [i for i,v in dataset]
Vsorted = [v for i,v in dataset]
V0 = numpy.interp(0, Isorted, Vsorted)

如果您正在使用 NumPy,就像您看起来那样,只需对数组的反向视图进行插值,以确保 I 按照 interp 的要求增加:

In [5]: V0 = np.interp(0, I[::-1], V[::-1])
In [6]: V0
Out[6]: 0.6188491701618427

如果数组很大,这会更快并节省内存。

但是,这仅在您的数据集已排序(升序或降序)时才有效。