相关疑难解决方法(0)

scipys ndimage过滤器的"反射"模式究竟是如何工作的?

我无法准确理解反射模式如何处理我的数组.我有这个非常简单的数组:

import numpy as np
from scipy.ndimage.filters import uniform_filter
from scipy.ndimage.filters import median_filter

vector = np.array([[1.0,1.0,1.0,1.0,1.0],[2.0,2.0,2.0,2.0,2.0],[4.0,4.0,4.0,4.0,4.0],[5.0,5.0,5.0,5.0,5.0]])

print(vector)
Run Code Online (Sandbox Code Playgroud)

[[1. 1. 1. 1. 1.] [2. 2. 2. 2. 2.] [4. 4. 4. 4. 4.] [5. 5. 5. 5. 5.]]

应用窗口大小为3的均匀(平均)过滤器,我得到以下结果:

filtered = uniform_filter(vector, 3, mode='reflect')

print(filtered)
Run Code Online (Sandbox Code Playgroud)

[[1.33333333 1.33333333 1.33333333 1.33333333 1.33333333] [2.33333333 2.33333333 2.33333333 2.33333333 2.33333333] [3.66666667 3.66666667 3.66666667 3.66666667 3.66666667] [4.66666667 4.66666667 4.66666667 4.66666667 4.66666667]]

如果我尝试手动复制练习,我可以得到这个结果.原始矩阵为绿色,窗口为橙色,结果为黄色.白色是"反映"的观察结果.

在此输入图像描述

结果是:

在此输入图像描述

但是当我尝试4或5的窗口大小时,我无法复制结果.

filtered = uniform_filter(vector, 4, mode='reflect')

print(filtered)
Run Code Online (Sandbox Code Playgroud)

[[1.5 1.5 1.5 1.5 1.5] [2. 2. …

python filtering image-processing scipy

17
推荐指数
1
解决办法
6031
查看次数

具有周期性边界条件的2D插值

我在具有周期性边界条件的2D空间上运行模拟.连续函数由其在网格上的值表示.我需要能够在空间的任何一点评估函数及其梯度.从根本上说,这不是一个难题 - 或者确切地说,这是一个几乎已经解决的问题.该函数可以使用带有scipy.interpolate.RectBivariateSpline的三次样条插值进行插值.几乎解决的原因是RectBivariateSpline无法处理周期性边界条件,scipy.interpolate中也没有其他任何东西可以处理,就我从文档中可以看出来一样.

有没有python包可以做到这一点?如果没有,我可以调整scipy.interpolate来处理周期性边界条件吗?例如,是否足以在整个空间周围放置四个网格元素的边界并明确表示其上的周期性条件?

[附录]稍微详细一点,如果重要的话:我正在用化学梯度模拟动物的运动.我上面提到的连续功能是它们被吸引的化学物质的浓度.它根据直接的反应/扩散方程随时间和空间变化.每只动物都有一个x,y位置(不能假设它在网格点).它们向上移动了引诱剂的梯度.我使用周期性边界条件作为模仿无界空间的简单方法.

python interpolation

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