python - Numpy:查找相邻元素至少有一个零的最有效方法(“边缘”)
问题描述
假设我有一个像这样的 numpy 数组:
np.array([[0, 0, 0, 0, 0],
[0, 1, 0, 0, 0],
[1, 1, 1, 0, 0],
[2, 2, 2, 1, 0],
[3, 3, 3, 2, 1]])
如何获得与其相邻的零正交值的索引?正交我的意思是它不会查看对角相邻的项目。例如,输出应该是:
np.array([[1, 1], [2, 0], [2, 2], [3, 3], [4, 4]])
解决方案
明显的方法有什么问题吗?
mask = arr == 0
out = np.zeros(mask.shape, dtype='bool')
out[:-1] = out[:-1] | mask[1:]
out[1:] = out[1:] | mask[:-1]
out[:,:-1] = out[:,:-1] | mask[:,1:]
out[:,1:] = out[:,1:] | mask[:,:-1]
np.argwhere(out & (arr!=0))
推荐阅读
- python - Python - 如何用引用表替换列中的所有匹配文本 - 这需要替换单元格中的多个匹配文本
- android - 我们可以在 Android 中编写代码来打开具有多个指纹的不同应用吗
- node.js - 使用 Node JS 连接到 Atlas MongoDB 时出错
- android - 为什么不显示来自相机的用户图像?
- angular - 如何在不同的角度分量中使用相同的功能
- php - 未从 Laravel 中的公用文件夹(https://localhost/storage)获取图像
- multithreading - 为每个对象加载生成一个新线程
- xslt - xslt用虚拟替换空数组
- android - Activity 在 onActivityResult 方法上变为空
- c# - 如何使用 Microsoft.Graph 与登录用户共享日历