能否使用np.gradient计算场的时间导数?
可以用np.gradient计算该场的时间导数
要实现这一点,需要先将三个时间点的二维场数据合并为三维数组,再针对时间轴调用np.gradient计算导数,具体操作如下:
步骤说明
- 合并三维数组:把三个4×4的二维数组沿时间轴堆叠,形成形状为
(3,4,4)的三维数组,其中第一维对应时间维度。 - 计算时间导数:调用
np.gradient时指定对时间轴(第0轴)求导,若时间间隔非默认值,需传入对应的时间步长参数。
示例代码
import numpy as np # 原始场数据 varT1 = np.array([[1,6,2,5],[9,4,2,1], [8,2,9,5], [9,3,2,1]]) varT2 = np.array([[9,4,1,6],[9,8,6,9], [8,4,1,1], [7,2,4,4]]) varT3 = np.array([[1,3,4,9],[8,7,7,4], [7,3,1,3], [3,7,0,6]]) # 堆叠为三维数组,时间轴为第0轴 var_3d = np.stack([varT1, varT2, varT3], axis=0) # 假设时间间隔为1,计算时间导数 time_deriv = np.gradient(var_3d, axis=0) # 输出导数数组形状:(3,4,4),对应每个时间点的场导数 print(time_deriv.shape)
补充说明
np.gradient对中间时间点(T2)采用中心差分计算,公式为(varT3 - varT1)/(2*dt);对端点(T1、T3)采用前向/后向差分,比如T1的导数为(varT2 - varT1)/dt,T3的导数为(varT3 - varT2)/dt。- 若实际时间间隔非1,可传入时间数组指定步长,示例如下:
t = np.array([0, 3, 7]) # 假设三个时间点的具体时刻 time_deriv = np.gradient(var_3d, t, axis=0)
内容的提问来源于stack exchange,提问作者s28
相关产品推荐
相关产品推荐

