二维数组python中的邻居

弗拉基米尔·埃雷明(Vladimir Eremin)

我有一个二维的numpy数组,如下所示:

start = np.array([
    [1,1,0,1],
    [1,0,0,1],
    [0,1,0,0]
                ])

我需要获得相同的矩阵,但是通过沿任意方向移动一步但只能沿 1

结果,我应该得到以下信息:

finish = np.array([
    [4,4,0,2],
    [4,0,0,2],
    [0,4,0,0]
                 ])

在我看来,这是一个众所周知的问题,但是我什至没有想出如何在搜索中表述它,因为我所寻找的一切都有些不同。最好的方法是什么?

T先生

您可以将scipy.ndimage标签功能与自定义结构数组一起使用s

import numpy as np
from scipy.ndimage import label    

start = np.asarray([ [1,1,0,1],
                   [1,0,0,1],
                   [0,1,0,0] ])

#structure array what to consider as "neighbors"
s = [[1,1,1],
     [1,1,1],
     [1,1,1]]

#label blobs in array
labeledarr,_ = label(start, structure=s)

#retrieve blobs and the number of elements within each blobs
blobnr, blobval = np.unique(labeledarr.ravel(), return_counts=True)

#substitute blob label with the number of elements
finish = np.zeros_like(labeledarr)
for k, v in zip(blobnr[1:], blobval[1:]):
    finish[labeledarr==k] = v

print(finish)

输出:

[[4 4 0 2]
 [4 0 0 2]
 [0 4 0 0]]

我相信可以用速度来优化用标签编号替换标签编号的最后一步
@ mad-physicist正确地提到,最初使用的labeledarr.flat应替换为labeledarr.ravel()在此解释其原因

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在二维数组中查找邻居

来自分类Dev

在二维数组中寻找最小的邻居

来自分类Dev

在二维数组中寻找最小的邻居

来自分类Dev

获取二维数组中邻居的坐标

来自分类Dev

检查二维数组中每个邻居的最快方法

来自分类Dev

在python中索引二维数组

来自分类Dev

在二维数组中查找有效的邻居索引

来自分类Dev

检查二维数组中已连接邻居的算法

来自分类Dev

直接在二维数组/网格中的值/节点旁边获取“邻居”

来自分类Dev

在二维numpy数组中获取邻居的有效方法

来自分类Dev

检查二维数组中已连接邻居的算法

来自分类Dev

二维字符数组中的邻居数不正确 (C)

来自分类Dev

二维数组的Numpy-get邻居矩阵

来自分类Dev

查找二维数组中指定坐标的邻居

来自分类Dev

Python二维数组

来自分类Dev

Python二维数组

来自分类Dev

在Python中读取二维数组的简单方法

来自分类Dev

如何在python中对二维数组进行排序

来自分类Dev

在Python中获取二维数组的乘积

来自分类Dev

Python的二维数组中是否存在别名?

来自分类Dev

在Python 3.x中求和二维数组

来自分类Dev

在二维python数组中搜索值

来自分类Dev

Python保存并读取二维数组中的灰度图像?

来自分类Dev

在Python中寻找二维数组的平均值

来自分类Dev

二维数组,用于python中的加密

来自分类Dev

在python中创建动态二维数组(循环)

来自分类Dev

在二维Python数组中查找元素

来自分类Dev

python增加二维数组中的值

来自分类Dev

Python中的二维数组索引错误