【发布时间】:2016-10-24 16:22:52
【问题描述】:
假设我有一个如下所示的 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
有没有更数学或更简洁的方法来做到这一点?
【问题讨论】:
-
如果有
2怎么办?如果相邻字段已经是1怎么办?1只有一个吗?它可以在“边缘”吗?那么,应该把它包起来吗? -
刚刚编辑了原帖。非常感谢您的评论
-
所以,对于边界元素,我们不会有 4 个邻居,而是 2 或 3 个邻居。那么,我们只会在那些中填写 1 吗?
-
是的,完全正确。我知道这听起来很奇怪,但是解释这个任务的背景故事需要很长时间并且是无关紧要的。如果你愿意,我当然可以给你解释
标签: python arrays numpy matrix