这是我的第一个StackOverflow问题,请耐心等待。我搜索了几天没有运气。我是博士海洋学专业的学生,我正在通过将一些实质性的Matlab代码转换为Python来学习Python 3(以及NumPy和XArray)。
线性插值时我发现了一个区别。原始代码使用Matlab的interp1d函数,我正在使用numpy的interp函数。大多数情况下结果是相同的,但数据中存在NaN值存在细微差别。
假设我有一维阵列,例如,特定深度的温度,在增加的时间内测量,并且在某些点处具有NaN值。 Matlab代码在更长的时间序列中插入它,通常以相同的时间增量,有效地将更短的时间序列放在更长的时间内(请不要告诉我有更好的方法来做到这一点,我只是试图处理这个现在问题:-))。
Matlab插值将温度值保持原样;但Numpy插值删除了最后的NaN前值。 如果我使用掩码来移除NaN,它会留下所有值,但会填充任何NaN部分,而不是两端。
e.g。 (原始记录)
[nan nan 3.0 4.0 3.5 nan nan 2.0 3.2 3.1 1.5 nan nan]
Matlab给出:
[nan .... nan nan nan 3.0 4.0 3.5 nan nan 2.0 3.2 3.1 1.5 nan nan ... nan]
Numpy给出(没有纳米面具):
[nan .... nan nan nan 3.0 4.0 nan nan nan 2.0 3.2 3.1 nan nan nan ... nan]
或(带纳米面具):
[nan .... nan nan nan 3.0 4.0 3.5 3.1 2.4 2.0 3.2 3.1 1.5 nan nan ... nan]
我是否应该将任何参数传递给np.interp以获得与Matlab函数相同的结果?或者它只是语言的差异而我必须处理它?我目前使用的唯一论点是
left=np.nan and right=np.nan.
谢谢!