我有一个2D数组数据,我用gaussian_kde
来估算数据分布。现在,我希望获得所得密度估计器的一阶导数以获得零交叉。是否有可能从估计的密度中获得它?如果是这样,Python中是否有任何可以帮助的内置函数?
答案 0 :(得分:4)
按照gaussian_kde文档中的示例,一旦有了Z
,或者更一般地说,在X轴上估算密度,就可以使用标准 numpy 功能:
diff = np.gradient(Z)
请注意np.gradient计算中心差异。如果您想要提出差异,可以采取以下措施:
diff = np.r_[Z[1:] - Z[:-1], 0]
要查找过零点,您可以执行以下操作:
sdiff = np.sign(diff)
zc = np.where(sdiff[:-1] != sdiff[1:])
您可以使用dy, dx = np.gradient(Z)
扩展上述2D作为Z
2D阵列。然后在Y和X方向上操作。