我的数据是0-20的位置列表,具有相应的强度,增量为0.1。它们是离散值而不是函数。这些值是(接近)对称的,并且在 10周围应该有一个中心点,如果你在自身上折叠图,你会有重叠的点。到目前为止,我已经通过将每对值之间的差异与中心等距相加来完成此操作。数据目前处于数据框架中。
这似乎与“如何在scipy中使用离散变量值最小化函数”的问题不同,因为目标实际上是找到函数的最小值,但我没有函数。
问题是有很多选项可能实际上是最佳中心位置(实际上,从~9-11以0.1为增量)并且我不想手动更改中心值,但它不是函数so scminy.optimize的fmin返回中心的值,不是0.1的增量。到目前为止,我的代码是:
#Position data has values from 0-20 in 0.1 increments
stepsize = 0.1
max_pos = 15 #max that center could be at
HAB_slice['Position Relative to Center'] = HAB_slice['Position'] - center_guess #Defines position relative to center
HAB_slice['Radial Position'] = np.abs(HAB_slice['Position Relative to Center'].values) #absolute value based on previous
possible_pos = np.linspace(0, max_pos, max_pos / stepsize+1)
for i in range(0, len(possible_pos)): # Loop sums absolute values of difference between same absolute difference from zero. Smaller value is generally best value
temp = HAB_slice[HAB_slice['Radial Position']==possible_pos[i]]
if len(temp) == 2:
center_sum += np.abs(temp['I'].diff().values[1])
然后手动更改center_guess的值,直到center_sum是它获得的最小值,这真的很乏味。注意'I'值基本上是y值。
有人能告诉我一种自动化的方法,它不需要将最小化的东西作为一个函数,以便它迭代“位置”的实际值来找到产生最小center_sum的那个吗?