n 维数组有 2n 个边(1 维数组有 2 个端点;2 维数组有 4 个边或边;3 维数组有 6 个 2 维面;4 维数组有 8 个边; ETC。)。这类似于抽象 n 维立方体发生的情况。
我想检查 n 维数组的所有边是否仅由零组成。以下是边由零组成的数组的三个示例:
# 1D
np.array([0,1,2,3,0])
# 2D
np.array([[0, 0, 0, 0],
[0, 1, 0, 0],
[0, 2, 3, 0],
[0, 0, 1, 0],
[0, 0, 0, 0]])
# 3D
np.array([[[0, 0, 0, 0],
[0, 0, 0, 0],
[0, 0, 0, 0]],
[[0, 0, 0, 0],
[0, 1, 2, 0],
[0, 0, 0, 0]],
[[0, 0, 0, 0],
[0, 0, 0, 0],
[0, 0, 0, 0]]])
如何检查多维 numpy 数组的所有边是否都是零数组?例如,使用一个简单的二维数组,我可以这样做:
x = np.random.rand(5, 5)
assert np.sum(x[0:, 0]) == 0
assert np.sum(x[0, 0:]) == 0
assert np.sum(x[0:, -1]) == 0
assert np.sum(x[-1, 0:]) == 0
虽然这种方法适用于 2D 情况,但它不能推广到更高维度。我想知道是否有一些聪明的 numpy 技巧可以在这里使用,以使其高效且更易于维护。