这是我的原始2d阵列A
[[0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 2, 2, 2, 2, 2, 2, 0, 0, 0],
[0, 2, 2, 2, 2, 2, 2, 0, 0, 0],
[0, 2, 2, 2, 2, 2, 2, 0, 0, 0],
[0, 2, 2, 2, 2, 2, 2, 0, 0, 0],
[0, 2, 2, 8, 8, 8, 2, 0, 0, 0],
[0, 2, 2, 8, 8, 8, 2, 0, 0, 0],
[0, 0, 0, 8, 8, 8, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]
假设我想在中间返回一个 8 的 3x3 子矩阵。我用这个表达式做了一个布尔面具,它看起来像这样。A == 8
array([[False, False, False, False, False, False, False, False, False,
False],
[False, False, False, False, False, False, False, False, False,
False],
[False, False, False, False, False, False, False, False, False,
False],
[False, False, False, False, False, False, False, False, False,
False],
[False, False, False, False, False, False, False, False, False,
False],
[False, False, False, True, True, True, False, False, False,
False],
[False, False, False, True, True, True, False, False, False,
False],
[False, False, False, True, True, True, False, False, False,
False],
[False, False, False, False, False, False, False, False, False,
False],
[False, False, False, False, False, False, False, False, False,
False]])
这就是我陷入困境的地方。如何返回带有该布尔掩码的子矩阵?如果我这样做,它会返回一个8s的平面数组,如下所示A[A == 8]
array([8, 8, 8, 8, 8, 8, 8, 8, 8])
另一种方法是获取返回 的行号和列号。如何使用它们返回矩阵?np.where(A == 8)(array([5, 5, 5, 6, 6, 6, 7, 7, 7]), array([3, 4, 5, 3, 4, 5, 3, 4, 5]))
对于这个问题,有没有更好的方法?
泛舟湖上清波郎朗
幕布斯6054654
慕侠2389804
相关分类