gpt4 book ai didi

python - NumPy:填充数组中 1 周围的字段

转载 作者:行者123 更新时间:2023-11-28 20:38:49 25 4
gpt4 key购买 nike

假设我有一个如下所示的 4x4 矩阵:

[[0, 0, 0, 0]
[0, 0, 1, 0]
[0, 0, 0, 0]
[0, 0, 0, 0]]

我想编写一个函数,获取一个的所有 4 个周围字段并将它们也变成 1。

上面的矩阵会变成:

[[0, 0, 1, 0]
[0, 1, 1, 1]
[0, 0, 1, 0]
[0, 0, 0, 0]]

我知道这可以使用 if 语句,但我真的想优化我的代码。

矩阵只包含 0 和 1。如果 1 位于矩阵的边缘,则 1 不应回绕,即如果最左边的字段为 1,则最右边的字段仍为 0。另外,我使用的是 Python 3.5

是否有更数学或更简洁的方法来做到这一点?

最佳答案

这看起来像二进制膨胀。 SciPy 中有一个函数可以有效地实现这一点:

>>> from scipy.ndimage import binary_dilation
>>> x
array([[0, 0, 0, 0],
[0, 0, 1, 0],
[0, 0, 0, 0],
[0, 0, 0, 0]])

>>> binary_dilation(x).astype(int)
array([[0, 0, 1, 0],
[0, 1, 1, 1],
[0, 0, 1, 0],
[0, 0, 0, 0]])

边缘的 1 按照您指定的方式处理(即不换行)。

参见 documentation进一步的选择和论据。

关于python - NumPy:填充数组中 1 周围的字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40223114/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com