我有一个大小为(H,W,H-h+1,W-w+1)的4d掩码,其中mask[:,:,dh,dw]表示从图像左上角偏移(dh,dw)的大小为hxw的滑动窗口的掩码。
范例:
>>> mask[:,:,0,0]
array([[1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0],
[1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0],
[1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0],
[1, 1, 1, 1, 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, 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, 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]])
>>> mask[:,:,1,1]
array([[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0],
[0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0],
[0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0],
[0, 1, 1, 1, 1, 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, 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],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]])
字符串
我想把一些大小为hxw的矩阵放在用mask表示的位置上。我的问题是我不知道如何将一个2d数组分配给一个4d掩码的4d数组。
例如,对于矩阵
array([[ 1, 2, 3, 4, 5],
[ 6, 7, 8, 9, 10],
[11, 12, 13, 14, 15],
[16, 17, 18, 19, 20]])
型
对于移位(0,0),我期望的结果是
>>> result[:,:,0,0]
array([[1, 2, 3, 4, 5, 0, 0, 0, 0, 0, 0, 0],
[6, 7, 8, 9, 10, 0, 0, 0, 0, 0, 0, 0],
[11, 12, 13, 14, 15, 0, 0, 0, 0, 0, 0, 0],
[16, 17, 18, 19, 20, 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, 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, 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]])
型
2条答案
按热度按时间lnvxswe21#
我不知道numpy是否有一个简单的方法来做这个,如果这是绝对必要的,我不能帮助你!
如果你不介意直接索引,你可以使用一些神奇的巫术艺术;),如下所示:
字符串
一些产出:
型
20jt8wwn2#
设置一个较小的情况下,与(4,4,2,2)面具。(2,2)大小只是为了演示的目的。
我们要插入的(2,2)数组:
字符串
掩码,只有2个子数组集合。不管它是bool还是int。int版本显示更多complex:
型
目标数组-与掩码大小相同:
型
我认为,非零的,where`,索引比bool掩码更有用:
型
这8个非零值从
res
中选择8个元素:型
复制
arr
来匹配。我不经常使用resize
,但在这里它只是我想要的:型
检查结果:
型
在我所演示的和其他答案之间可能有很多重叠之处,但我试图让事情直接和简单。