Skip to main content
 首页 » 编程设计

python之matlab 的 smooth3 函数在 python 中的等价物是什么

2025年05月04日11虾米姐

我在 python 中找不到与 matlab 的 smooth3 等效的东西。你如何在 python 中执行 3d 平滑?

请您参考如下方法:

最好用scipy.ndimage为了这。它具有大量功能,并且可以让您出色地控制内存使用(例如,您可以就地执行所有这些操作,而无需制作副本)。

smooth3d 的默认过滤器等效于 scipy.ndimage.uniform_filter(data, 3) (“3”是过滤器的大小。3 是 matlab 的默认值)。

smooth3(data, 'gaussian') 的等效项是 scipy.ndimage.gaussian_filter(data, 3) .

请注意,scipy.ndimage 的函数适用于任何维度数据。为了便于可视化,我将在下面展示一个 2D 示例,但是对于 1D、3D、4D、10D 等,函数调用是相同的。

import numpy as np 
import scipy.ndimage as ndimage 
import matplotlib.pyplot as plt 
 
raw_data = np.random.random((30,30)) 
 
fig, axes = plt.subplots(ncols=3) 
 
axes[0].imshow(raw_data, interpolation='nearest') 
axes[0].set(title='Raw Data', xticks=[], yticks=[]) 
 
axes[1].imshow(ndimage.uniform_filter(raw_data, 3), interpolation='nearest') 
axes[1].set(title='Uniform Filter', xticks=[], yticks=[]) 
 
axes[2].imshow(ndimage.gaussian_filter(raw_data, 3), interpolation='nearest') 
axes[2].set(title='Gaussian Filter', xticks=[], yticks=[]) 
 
fig.tight_layout() 
plt.show()