Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Scipy interp1d插值遮罩阵列_Python_Arrays_Numpy_Scipy - Fatal编程技术网

Python Scipy interp1d插值遮罩阵列

Python Scipy interp1d插值遮罩阵列,python,arrays,numpy,scipy,Python,Arrays,Numpy,Scipy,我有蒙版数组(玩具示例)[1 2 3 4--6] points=[1,2,3,4,0,6] 掩码=[0,0,0,0,1,0] 点=毫安阵列(点,掩码=掩码) 我想把它从6维插值到任何数字,例如,6维。 我的插值标准是,它将忽略屏蔽值,并跳过该索引 不希望出现的行为,例如使用lin=np.linspace(0,1,6): f=interp1d(lin,点,轴=0,kind='cubic') f(林)#[1 2 3 4-8.8817842e-16 6] 相反,我希望它的行为像: compress

我有蒙版数组(玩具示例)[1 2 3 4--6]

points=[1,2,3,4,0,6]
掩码=[0,0,0,0,1,0]
点=毫安阵列(点,掩码=掩码)
我想把它从6维插值到任何数字,例如,6维。 我的插值标准是,它将忽略屏蔽值,并跳过该索引

不希望出现的行为,例如使用
lin=np.linspace(0,1,6)

f=interp1d(lin,点,轴=0,kind='cubic')
f(林)#[1 2 3 4-8.8817842e-16 6]
相反,我希望它的行为像:

compressed_lin=[0,0.2,0.4,0.6,1]
压缩的_点=np.数组([1,2,3,4,6])
f=interp1d(压缩线,压缩点,轴=0,种类=立方)
f(林)#[1 2 3 4 5 6]
实际数据: 我的数据是
[100100,2]
的形状,因此它不像从大小为100的
linspace
中隐藏屏蔽值那样简单

关于遮罩阵列,请注意: 我已经知道有一种方法可以在屏蔽阵列上进行2d插值(,)

如果有一种方法可以插值遮罩数组中要填充的所有值,而不是常量填充,这将解决问题,因为我将处理填充的numpy数组

我不能使用
compressed
的原因是它可以更改索引的顺序和数组的大小,例如:

points=np.array([1,2,3,4,5,6])
点数=毫安([
ma.数组(点,掩码=[0,0,0,0,1,0]),
ma.数组(点,掩码=[0,0,1,0,0,0]),
])
打印(点数)
# [[1 2 3 4 -- 6]
# [1 2 -- 4 5 6]]
打印(np.重塑(points.compressed(),(2,5)))
# [[1 2 3 4 6]
# [1 2 4 5 6]]

您已经看到了我关于
np.ma
工作原理的解释。只有
np.ma
函数和方法知道
掩码
,知道何时/如何应用
填充的
压缩的
。其他任何内容都会使用
数据
属性,无需修改。谢谢@hpaulj您的回答确实非常有用,我依靠它实现了许多功能。然而,我找不到一种方法来使用它来处理这个案例。由于无法使用
填充的
压缩的
,我在问题上添加了注释。我知道
interp1d
只使用
数据
本身,但我正试图弄清楚如何(有效地)实现这一点。你说你的数据大于1维,那么应该插值哪个维?您提供的虚拟问题与实际问题在性质上不同。不同维度上的插值可能导致不同的插值。