我有一个 3D 数组(z, y, x),shape=(92, 4800, 4800)其中每个值都axis 0代表不同的时间点。在少数情况下,时域中的值获取失败,导致某些值变为np.NaN。在其他情况下,没有获取任何值,所有值z都是np.NaN。
什么是使用线性插值来填充最有效的方式np.NaN沿着axis 0无视所有的值是实例np.NaN?
这是我正在做的工作的一个工作示例,它使用pandas包装器到scipy.interpolate.interp1d. 在原始数据集上,每个切片大约需要 2 秒,这意味着整个数组的处理时间为 2.6 小时。减小大小的示例数据集大约需要 9.5 秒。
import numpy as np
import pandas as pd
# create example data, original is (92, 4800, 4800)
test_arr = np.random.randint(low=-10000, high=10000, size=(92, 480, 480))
test_arr[1:90:7, :, :] = -32768 # NaN fill value in original data
test_arr[:, 1:90:6, 1:90:8] = …Run Code Online (Sandbox Code Playgroud) 我有一组数据,我正在插入 kind = 'cubic'.
我想找到这个三次插值函数的最大值.
目前我所做的只是找到插值数据数组中的最大值,但我想知道作为对象的插值函数是否可以区分以找到它的极值?
码:
import numpy as np
from scipy.interpolate import interp1d
import matplotlib.pyplot as plt
x_axis = np.array([ 2.14414414, 2.15270826, 2.16127238, 2.1698365 , 2.17840062, 2.18696474, 2.19552886, 2.20409298, 2.2126571 , 2.22122122])
y_axis = np.array([ 0.67958442, 0.89628424, 0.78904004, 3.93404167, 6.46422317, 6.40459954, 3.80216674, 0.69641825, 0.89675386, 0.64274198])
f = interp1d(x_axis, y_axis, kind = 'cubic')
x_new = np.linspace(x_axis[0], x_axis[-1],100)
fig = plt.subplots()
plt.plot(x_new, f(x_new))
Run Code Online (Sandbox Code Playgroud)