gpt4 book ai didi

python-3.x - Python Numpy 在爆炸性传播中跟踪所有 0

转载 作者:行者123 更新时间:2023-12-03 19:05:50 25 4
gpt4 key购买 nike

题:
我有一个 python numpy 数组列表,它是 RxC 维度,包含除一个地方为 0 之外的所有 1。
假设我们现在有 3x4。我必须从 0 点开始跟踪它的相邻位置,以查看它的爆炸性传播。
检查输入以获取上下文的视觉表示。
它与链式 react 传播有关,但我无法理解如何在二维数组中跟踪它。
可以有“N”个零,如何将其周围的所有位置也标记为 0。
我试过的:
我试着对它做一些数学运算,但这个公式只适用于一个地方0 - 位置 3,3
尺寸 - 3x4
3-3, 4-3 = 1 次迭代。但它错了。
输入:
起点:

[
[1,1,1,1],
[1,1,1,1],
[1,1,0,1],
[1,1,1,1]
]
迭代 1:
[
[1,1,1,1],
[1,0,0,0],
[1,0,0,0],
[1,0,0,0]
]
迭代 2:
[
[0,0,0,0],
[0,0,0,0],
[0,0,0,0],
[0,0,0,0]
]
输出:
链式 react 传播需要 2 次迭代才能完成。

最佳答案

IIUC,使用 scipy.ndimage.distance_transform_cdt :

from scipy.ndimage import distance_transform_cdt

arr = np.ones((4, 4))
arr[2,2] = 0
distance_transform_cdt(arr)
输出:
array([[2, 2, 2, 2],
[2, 1, 1, 1],
[2, 1, 0, 1],
[2, 1, 1, 1]])
您可以将其最大化以获得 n
distance_transform_cdt(arr).max()
# 2
用 2 个零测试:
arr2 = np.ones((5, 5))
arr2[2,3] = 0
arr2[1,1] = 0
arr2

array([[1., 1., 1., 1., 1.],
[1., 0., 1., 1., 1.],
[1., 1., 1., 0., 1.],
[1., 1., 1., 1., 1.],
[1., 1., 1., 1., 1.]])

distance_transform_cdt(arr2)

array([[1, 1, 1, 2, 2],
[1, 0, 1, 1, 1],
[1, 1, 1, 0, 1],
[2, 2, 1, 1, 1],
[3, 2, 2, 2, 2]])

关于python-3.x - Python Numpy 在爆炸性传播中跟踪所有 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63656785/

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