我有一个数组,想要将其分割成基于明显且不重叠矩形的子数组:
>>> A = array([[ 0., nan, 2., nan, 4., nan, 6, nan],
[ nan, nan, nan, nan, nan, nan, nan, nan],
[ nan, nan, nan, nan, 20, nan, 22, nan],
[ nan, nan, nan, nan, nan, nan, nan, nan],
[ 32., nan, 34., nan, 36., nan, nan, nan],
[ nan, nan, nan, nan, nan, nan, nan, nan],
[ nan, nan, nan, nan, nan, nan, nan, nan],
[ nan, nan, nan, nan, nan, nan, nan, nan]])
这些位置可以轻松地使用 np.argwhere
找到,而使用 np.split
看起来是很自然的。我希望得到以下输出:
>>> np.split_2d(A)
(array([[ 0., nan ]
[ nan, nan ]
[ nan, nan ]
[ nan, nan ]])
array([[ 2., nan ]
[ nan, nan ]
[ nan, nan ]
[ nan, nan ]])
array([[ 32., nan ]
[ nan, nan ]
[ nan, nan ]
[ nan, nan ]])
array([[ 34., nan ]
[ nan, nan ]
[ nan, nan ]
[ nan, nan ]])
array([[ 4., nan ]
[ nan, nan ]])
array([[ 6., nan ]
[ nan, nan ]])
array([[ 20, nan ]
[ nan, nan ]])
array([[ 22, nan ]
[ nan, nan ]])
array([[ 36., nan, nan, nan ]
[ nan, nan, nan, nan ]
[ nan, nan, nan, nan ]
[ nan, nan, nan, nan ]]))
...
< p > np.split
和相应的组件vsplit
, hsplit
和dsplit
只能沿着指定的轴和索引数组进行操作。
一个有关重采样的问题回答了一个类似的问题,但在我的情况下,箱子的间距不是规则的,大小也不相同。
在我的情况下,我尝试仅使用少量样本近似图像。因此,我希望将图像分割成最明显和直观的方式。我希望将图像基本上分成四个象限。例如,这张图片的右下角将属于第36项而不是第22项。
是否有简单的方法来做到这一点,还是我必须自己解析它们?