您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

python – 计算另一个数组中没有重叠的数组的出现次数

5b51 2022/1/14 8:21:49 python 字数 1884 阅读 498 来源 www.jb51.cc/python

我有一个mxn矩阵A,其中m%t = n%t = 0,因此较小的txt矩阵B平铺矩阵而没有边框或重叠.我想检查A是否完全由B的瓦片组成,而不是尽可能有效地计算作为中间步骤的瓦片.此外,对于我的特殊用例,没有必要知道B.测试A是否在每个方向上严格重复每个txt瓦片就足够了.数字示例:A = [[1, 0, 1, 0], [0, 1, 0, 1],

概述

我有一个mxn矩阵A,其中m%t = n%t = 0,因此较小的txt矩阵B平铺矩阵而没有边框或重叠.我想检查A是否完全由B的瓦片组成,而不是尽可能有效地计算作为中间步骤的瓦片.此外,对于我的特殊用例,没有必要知道B.测试A是否在每个方向上严格重复每个txt瓦片就足够了.

数字示例:

A = [[1,1,0],[0,1],[1,1]]
B.shape = [2,2]
--> True
B.shape = [1,1]
--> False

到目前为止,我计算了一个比较矩阵C,它只是B的平铺,以适应A的大小:

import numpy as np
x,y      = B.shape
x_a,y_a = A.shape
x_t = x_a/x
y_t = y_a/y
B_dash = A[:x,:y]
C = np.tile(B_dash,(x_t,y_t))
np.count_nonzero(A-C)

有没有更快的方法,不计算C?

from skimage.util import view_as_blocks as viewW

out = np.count_nonzero((viewW(A,B.shape) == B).all((2,3)))

Appproach#2:与NumPy保持联系,我们会 –

m1,n1 = A.shape
m2,n2 = B.shape
out = np.count_nonzero((A.reshape(m1//m2,m2,n1//n2,n2) == B[:,None]).all((1,3)))

样品运行 –

In [274]: A
Out[274]: 
array([[2,2,[5,3,5,[3,6],1]])

In [275]: B
Out[275]: 
array([[3,3],0]])

In [276]: np.count_nonzero((viewW(A,3)))
Out[276]: 1



In [278]: A
Out[278]: 
array([[2,1]])

In [279]: B
Out[279]: 
array([[3,0]])

In [280]: np.count_nonzero((viewW(A,3)))
Out[280]: 2

总结

以上是编程之家为你收集整理的python – 计算另一个数组中没有重叠的数组的出现次数全部内容,希望文章能够帮你解决python – 计算另一个数组中没有重叠的数组的出现次数所遇到的程序开发问题。


如果您也喜欢它,动动您的小指点个赞吧

除非注明,文章均由 laddyq.com 整理发布,欢迎转载。

转载请注明:
链接:http://laddyq.com
来源:laddyq.com
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


联系我
置顶