python:二维矩阵中更快的局部最大值
发布时间:2020-12-20 12:07:26 所属栏目:Python 来源:网络整理
导读:给定:R是mxn浮点矩阵 输出:O是m×n矩阵,其中O [i,j] = R [i,j] if(i,j)是局部最大值,否则O [i,j] = 0.局部最大值定义为以i,j为中心的3×3块中的最大元素. 使用numpy和scipy在python上执行此操作的更快的方法是什么. m,n = R.shapefor i in range(m): for j
给定:R是mxn浮点矩阵
输出:O是m×n矩阵,其中O [i,j] = R [i,j] if(i,j)是局部最大值,否则O [i,j] = 0.局部最大值定义为以i,j为中心的3×3块中的最大元素. 使用numpy和scipy在python上执行此操作的更快的方法是什么. m,n = R.shape for i in range(m): for j in range(n): R[i,j] *= (1 if R[min(0,i-1):max(m,i+2),min(0,j-1):max(n,j+2)].max() == R[i,j] else 0) 解决方法
你可以使用
scipy.ndimage.maximum_filter :
In [28]: from scipy.ndimage import maximum_filter 这是一个样本R: In [29]: R Out[29]: array([[3,3,3],[0,2,1,2],[3,0],[2,1]]) 在3×3窗口上获得最大值: In [30]: mx = maximum_filter(R,size=3) In [31]: mx Out[31]: array([[3,2]]) 将mx与R进行比较;这是一个布尔矩阵: In [32]: mx == R Out[32]: array([[ True,True,False,True],[False,False],[ True,False]],dtype=bool) 使用 In [33]: O = np.where(mx == R,R,0) In [34]: O Out[34]: array([[3,0]]) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
- 在python中使用正则表达式查找可嵌套字符串组
- python与sqlite3实现解密chrome cookie实例代码
- Django应用程序中的/ admin /中的UnicodeEncodeE
- python穷举狂人TD1.5积分代码2
- python – 在matplotlib中获取数据坐标中的bbox
- 使用Python / urllib / beautifulsoup从URL批量下
- python – 如何过滤Django QuerySet的相关字段”
- Python三方库:Matplotlib(数据可视化)
- python – Pandas:使用pd.Series对带有索引的
- Python控制鼠标和键盘-PyAutoGUI用法详解
热点阅读