我有下面的数据集,它代表不同深度的水温。
depth temp
0.0 18.613
1.0 18.625
2.0 18.628
3.0 18.617
4.0 18.599
5.0 18.580
6.0 18.559
7.0 18.538
8.0 18.514
9.0 18.478
10.0 18.424
我想计算温度梯度最大的深度。
我尝试使用dy=(np.diff(Tw))/(np.diff(hw))
来计算最大差异,但在那种情况下,我只能得到最大梯度(即dy),但我需要最大梯度的深度。
感谢您的帮助
答案 0 :(得分:3)
假设您将temp
存储在名为y
的列表中,则使用NumPy的np.gradient(y)
计算梯度。然后,您可以采用梯度的最大值,其对应的索引为np.argmax(np.abs(np.gradient(y)))
使用该索引,您可以获得depth
,在这里我用列表x
i_max = np.argmax(np.abs(np.gradient(y)))
print (x[i_max])
输出
0.0
您也可以在数据框架的框架中结合以上思想。如果绘制depth
与梯度的关系图,这就是它的外观。当然,您可以使用一些插值来使曲线更平滑并获得更准确的值。在这里(也是从您的数据中得出的事实)假定间距是统一的。您还可以指定可变间距或非单位间距。有关如何使用它们的更多详细信息,请参见:https://docs.scipy.org/doc/numpy/reference/generated/numpy.gradient.html
答案 1 :(得分:2)
我知道有SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
Date date = new Date();
sdf.setTimeZone(TimeZone.getTimeZone("GMT-7"));
String value = sdf.format(date);
System.out.println(value);
Date date2 = sdf.parse(value);
long result = date2.getTime();
System.out.println(result);
return result;
个函数scipy
,但让我们尝试一些不同的方法
scipy.signal.argrelextrema
更新似乎使您的措辞有点困惑,我已经更新了,请注意这里应该是9-10的范围最大。
df.iloc[(np.sign(df.temp.diff().dropna()).diff().dropna()==-2).nonzero()[0]+1,:]
Out[729]:
depth temp
2 2.0 18.628
答案 2 :(得分:1)
您似乎想让熊猫移动
import pandas as pd
df['grad_temp'] = df['temp'] / df['temp'].shift(-1)
df['grad_depth'] = df['depth'] / df['depth'].shift(-1)
df.max() #will give you the max for all columns
注意:您将使用NaN作为最后一个值