Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/347.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 使用圆形遮罩求平均值_Python_Numpy_Mask_Circular Dependency - Fatal编程技术网

Python 使用圆形遮罩求平均值

Python 使用圆形遮罩求平均值,python,numpy,mask,circular-dependency,Python,Numpy,Mask,Circular Dependency,我想知道下面的python脚本是否有任何优化,因为对我来说,它运行得相当慢。我想从矩阵Z的当前元素中得到半径r内的平均值。X和Y的维数与Z(二维数组)相同。有人有改进的解决方案吗?先谢谢你 Z_mean = np.zeros(Z.shape) for ii, zz in np.ndenumerate(Z): msk = (X-X[ii])**2 + (Y-Y[ii])**2 <= r**2 Z_mean[ii] = np.nanmean(Z[msk]) Z_me

我想知道下面的python脚本是否有任何优化,因为对我来说,它运行得相当慢。我想从矩阵Z的当前元素中得到半径r内的平均值。X和Y的维数与Z(二维数组)相同。有人有改进的解决方案吗?先谢谢你

Z_mean = np.zeros(Z.shape)
for ii, zz in np.ndenumerate(Z):
    msk = (X-X[ii])**2 + (Y-Y[ii])**2 <= r**2
    Z_mean[ii] = np.nanmean(Z[msk])     
Z_mean=np.zero(Z.shape)
对于ii,np.ndenumerate(Z)中的zz:

msk=(X-X[ii])**2+(Y-Y[ii])**2首先构造一个循环平均核:

x = np.arange(-r, r+1)
kernel = (x[None,:]**2 + x[:,None]**2 <= r**2).astype(float)
kernel /= np.sum(kernel)

请发一张MCVE。我不知道这里的数量是多少。这段代码的编写方式,让我感到惊讶的是它居然能工作。你的意思是像(Z)一样的零吗?复习/提示:分而治之!。创建2个循环(一个用于ii,一个用于zz)计算外循环中内循环中不变的内容。(我想,不是python专家,而是有经验的程序员)谢谢你,我已经实现了你建议的代码,效果很好!
from scipy.signal import convolve2d
Z_mean = convolve2d(Z, kernel)