假设我有以下 4 x 3 x 3 数组,
array([[[-2, -2, -2],
[-2, -2, -2],
[-2, -2, -2]],
[[-2, -2, -2],
[-2, -2, -2],
[-2, -2, -2]],
[[-2, -2, 71],
[-1, -1, -1],
[71, -1, 52]],
[[-2, -2, -2],
[-2, -2, -2],
[-2, -2, -2]]])
我想按以下标准过滤此类数组:
将每个 3 x 3 数组视为一个块。如果该块中的所有元素都等于 -2,我们应该切割整个块,因此目标数组将如下所示(1 x 3 x 3):
array([[[-2, -2, 71],
[-1, -1, -1],
[71, -1, 52]]])
我只能想出一个带有明确的暴力解决方案if
条件和一个for
循环,但不起作用。谁能分享更好的方法吗?
您可以通过以下命令重新创建原始数组
array = np.array([[-2,-2,-2,-2,-2,-2,-2,-2,-2],
[-2,-2,-2,-2,-2,-2,-2,-2,-2],
[-2,-2,71,-1,-1,-1,71,-1,52],
[-2,-2,-2,-2,-2,-2,-2,-2,-2]])
newarr = array.reshape(4,3,3)