相关疑难解决方法(0)

大型 3D 阵列上的快速 1D 线性 np.NaN 插值

我有一个 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)

python interpolation numpy scipy pandas

5
推荐指数
1
解决办法
2007
查看次数

找到1d插值函数的最大值/最小值

我有一组数据,我正在插入 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)

python interpolation minimization maximize scipy

5
推荐指数
1
解决办法
2146
查看次数

标签 统计

interpolation ×2

python ×2

scipy ×2

maximize ×1

minimization ×1

numpy ×1

pandas ×1