gpt4 book ai didi

python - 比较矩阵中相邻单元格的更好方法

转载 作者:行者123 更新时间:2023-12-01 05:52:07 29 4
gpt4 key购买 nike

Possible Duplicate:
Numpy/Python: Array iteration without for-loop

假设我有一个大小为 100x100 的矩阵,我想将每个像素与其直接邻居(左、上、右、下)进行比较,然后对当前矩阵或相同大小的新矩阵进行一些操作。Python/Numpy 中的示例代码可能如下所示:(比较>0.5没有意义,我只是想在比较邻居时给出一些操作的工作示例)

import numpy as np
my_matrix = np.random.rand(100,100)
new_matrix = np.array((100,100))
my_range = np.arange(1,99)
for i in my_range:
for j in my_range:

if my_matrix[i,j+1] > 0.5:
new_matrix[i,j+1] = 1

if my_matrix[i,j-1] > 0.5:
new_matrix[i,j-1] = 1

if my_matrix[i+1,j] > 0.5:
new_matrix[i+1,j] = 1

if my_matrix[i-1,j] > 0.5:
new_matrix[i-1,j] = 1

if my_matrix[i+1,j+1] > 0.5:
new_matrix[i+1,j+1] = 1

if my_matrix[i+1,j-1] > 0.5:
new_matrix[i+1,j-1] = 1

if my_matrix[i-1,j+1] > 0.5:
new_matrix[i-1,j+1] = 1

如果我想进入一个相邻的单元格并从它开始将其与其邻居进行比较,这可能会变得非常令人讨厌......您是否有一些建议如何以更有效的方式完成此操作?这可能吗?

最佳答案

我不是 100% 确定您的代码的目标是什么,忽略边界处的索引问题相当于

new_matrix = my_matrix > 0.5

但是您可以通过形态学运算快速进行这些计算的高级版本:

import numpy as np
from scipy.ndimage import morphology

a = np.random.rand(5,5)
b = a > 0.5

element = np.array([[0, 1, 0], [1, 1, 1], [0, 1, 0]])
result = morphology.binary_dilation(b, element) * 1

关于python - 比较矩阵中相邻单元格的更好方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13857769/

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