wie*_*nYo -1 python numpy numerical-methods

您是否知道是否有算法或方法可以找到函数的最高点之间的距离(如上)(因此,A,B,C,D的值等等)?
例如,当您具有此函数的值数组和该函数的参数数组时。
或者,也许在Python中有一个内置函数可以做到这一点?
y=np.array(radial)
x=np.arange(len(y))
m=argrelextrema(y, np.greater)[0]
z=[y[i] for i in m]
plt.plot(y)
plt.plot(m,z,'rs')
plt.show()
Run Code Online (Sandbox Code Playgroud)
其中“ radial”是浮点列表。
您可以scipy.signal.argrelextrema用来查找最大值的索引:
import numpy as np
from scipy.signal import argrelextrema
from matplotlib.pyplot import *
x = np.random.random(50) #data
m = argrelextrema(x, np.greater)[0] #array of indexes of the locals maxima
y = [x[i] for i in m] #array of max values
plot(x)
plot(m, y, 'rs')
show()
Run Code Online (Sandbox Code Playgroud)

找到最大值后,您可以numpy.linalg.norm用来查找距离:
distances = [np.linalg.norm(np.array([m[i], y[i-1]]) - np.array([m[i-1], y[i-1]])) for i in np.arange(1, len(m))]
Run Code Online (Sandbox Code Playgroud)
或者只是减去:
distances = [m[i] - m[i-1] for i in np.arange(1, len(m))]
Run Code Online (Sandbox Code Playgroud)
甚至只是使用 numpy.diff
distances = np.diff(m)
Run Code Online (Sandbox Code Playgroud)
添加此代码以获得更好的图并测试结果:
for i in range(len(distances)):
plot([m[i], m[i] + distances[i]], 2*[y[i]], color = 'g')
axvline(m[i], linestyle='--', color='0.75')
Run Code Online (Sandbox Code Playgroud)

| 归档时间: |
|
| 查看次数: |
747 次 |
| 最近记录: |