在numpy 2D数组中查找与零相邻的非零元素的数量

乔治·伯德尔

给定一个矩阵,我要计算与空(零)像元相邻的填充元素(非零像元)的数量,其中相邻元素沿着行(左/右)。

我已经尝试过np.roll和减去矩阵,但我不确定如何编写没有循环的代码。

例如,给定矩阵:

arr = 
[[1 1 0 0 0 0 0 0 1 0]
 [1 1 0 0 0 0 0 1 1 1]
 [0 1 1 0 0 0 0 0 0 0]
 [0 1 1 0 0 0 0 0 0 0]
 [0 1 1 0 0 0 0 0 0 0]
 [0 0 1 0 0 0 0 0 0 0]
 [0 0 1 0 0 0 0 0 0 0]
 [0 0 0 0 0 0 0 0 0 0]
 [0 0 0 0 0 0 0 0 0 0]]

我们有12个与零相邻的非零元素。

迪卡卡

方法1

我们可以使用2D convolution与适当的内核来解决它([1,1,1])([1,0,1])zeros用于卷积求和掩模和外观是>=1,该信号的至少一个零在三个元件的各滑动窗口和与所述当前元素的额外的检查,是非零确认至少有一个邻居0

实现看起来像这样-

In [245]: a  # input array
Out[245]: 
array([[1, 1, 0, 0, 0, 0, 0, 0, 1, 0],
       [1, 1, 0, 0, 0, 0, 0, 1, 1, 1],
       [0, 1, 1, 0, 0, 0, 0, 0, 0, 0],
       [0, 1, 1, 0, 0, 0, 0, 0, 0, 0],
       [0, 1, 1, 0, 0, 0, 0, 0, 0, 0],
       [0, 0, 1, 0, 0, 0, 0, 0, 0, 0],
       [0, 0, 1, 0, 0, 0, 0, 0, 0, 0],
       [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
       [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]])

In [246]: from scipy.signal import convolve2d

In [248]: k = [[1,1,1]] # kernel for convolution

In [249]: ((convolve2d(a==0,k,'same')>=1) & (a!=0)).sum()
Out[249]: 12

方法#2

另一种方法是利用的slicing,我们会寻找一次性沿每一行抵消元素的零和非零比赛为左侧和右侧LHSRHS最后总结的-

maskRHS = (a[:,1:]==0) & (a[:,:-1]!=0)
maskLHS = (a[:,1:]!=0) & (a[:,:-1]==0)
maskRHS[:,1:] |= maskLHS[:,:-1]
out = maskRHS.sum() + maskLHS[:,-1].sum()

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在numpy数组中求和连续的非零元素

来自分类Dev

在numpy二维数组中获取与零相邻的所有元素的索引

来自分类Dev

对行的非零元素执行numpy乘积

来自分类Dev

如何计算两个Numpy数组之间匹配的零元素的数量?

来自分类Dev

如何将python列表或numpy数组中的所有非零元素移到一侧?

来自分类Dev

如何获取numpy中每一列的非零元素索引?

来自分类Dev

如何从numpy.ndarray中随机选择一些非零元素?

来自分类Dev

Python NumPy-给具有非零元素的身份矩阵非零

来自分类Dev

如何将每个numpy列中的所有非零元素分配给大小与列数相同的数组中的值?

来自分类Dev

获取numpy矩阵的前n个非零元素

来自分类Dev

查找数组中的非零元素

来自分类Dev

在Numpy数组中查找非唯一元素的索引

来自分类Dev

替换非零的numpy数组元素

来自分类Dev

如何将 numpy 2d 数组裁剪为非零值?

来自分类Dev

在numpy数组中查找连续的零

来自分类Dev

在Simulink中查找二维数组中第一个非零元素的索引

来自分类Dev

如何查找数组中最后一个非零元素的索引

来自分类Dev

在(非)对角矩阵中查找非零元素的速度

来自分类Dev

查找二维数组中具有一些非零元素的列的索引

来自分类Dev

在MATLAB中的向量的固定数量的非零元素之间插入选择的零数量

来自分类Dev

在Matlab矩阵中查找非零元素的索引

来自分类Dev

在Matlab矩阵中查找非零元素的索引

来自分类Dev

如何从数组中删除空/零元素?

来自分类Dev

如何从数组中删除空/零元素?

来自分类Dev

查找数据中的零元素数量

来自分类Dev

用数组中的下一个非零元素替换0

来自分类Dev

在numpy数组中插入零

来自分类Dev

Python Numpy非零

来自分类Dev

Python Numpy非零

Related 相关文章

  1. 1

    如何在numpy数组中求和连续的非零元素

  2. 2

    在numpy二维数组中获取与零相邻的所有元素的索引

  3. 3

    对行的非零元素执行numpy乘积

  4. 4

    如何计算两个Numpy数组之间匹配的零元素的数量?

  5. 5

    如何将python列表或numpy数组中的所有非零元素移到一侧?

  6. 6

    如何获取numpy中每一列的非零元素索引?

  7. 7

    如何从numpy.ndarray中随机选择一些非零元素?

  8. 8

    Python NumPy-给具有非零元素的身份矩阵非零

  9. 9

    如何将每个numpy列中的所有非零元素分配给大小与列数相同的数组中的值?

  10. 10

    获取numpy矩阵的前n个非零元素

  11. 11

    查找数组中的非零元素

  12. 12

    在Numpy数组中查找非唯一元素的索引

  13. 13

    替换非零的numpy数组元素

  14. 14

    如何将 numpy 2d 数组裁剪为非零值?

  15. 15

    在numpy数组中查找连续的零

  16. 16

    在Simulink中查找二维数组中第一个非零元素的索引

  17. 17

    如何查找数组中最后一个非零元素的索引

  18. 18

    在(非)对角矩阵中查找非零元素的速度

  19. 19

    查找二维数组中具有一些非零元素的列的索引

  20. 20

    在MATLAB中的向量的固定数量的非零元素之间插入选择的零数量

  21. 21

    在Matlab矩阵中查找非零元素的索引

  22. 22

    在Matlab矩阵中查找非零元素的索引

  23. 23

    如何从数组中删除空/零元素?

  24. 24

    如何从数组中删除空/零元素?

  25. 25

    查找数据中的零元素数量

  26. 26

    用数组中的下一个非零元素替换0

  27. 27

    在numpy数组中插入零

  28. 28

    Python Numpy非零

  29. 29

    Python Numpy非零

热门标签

归档