gpt4 book ai didi

python - 获取矩阵中重复数字的坐标

转载 作者:太空宇宙 更新时间:2023-11-04 10:06:50 25 4
gpt4 key购买 nike

我需要点子,这不是作业......

我有以下矩阵,如何获得重复数字的坐标,

imagen

重复 [ [ [0,0],[1,0],[2,0],[0,1],[0,2],[1,2],[1,3],[2 ,2] ], [ [0,3], [0,4] , ....... ]

瞬间代码:

n = [ [1,1,1,3,3],[1,2,1,1,2],[1,2,1,3,3] ]

coordinates = [[-1,0],[0,1],[1,0],[0,-1]]
i = 0
while i < len(n):
j = 0
fila = []
while j < len(n[0]):
for coordinate in coordinates:
X = i + coordinate[0]
Y = j + coordinate[1]
if X >= 0 and X < len(n) and Y >= 0 and Y < len(n[0]):
# I tried with two for in here but its not efficient
j+=1
i+=1

谢谢

编辑:

预期输出:

第 1 组,分开的 2,分开的 3 和只有 2

重复 [ [ [0,0],[1,0],[2,0],[0,1],[0,2],[1,2],[1,3],[2 ,2] ], [ [0,3], [0,4] ], [ [1,1],[2,1] ], [ [1,4] ], [ [2,3], [2 ,4] ]

最佳答案

效率不是很高,因为测试数组多次用于逻辑比较检查,但大多数循环都被推送到 C 级。同时,它演示了一些有趣的方法,如果您要执行类似的功能,您可以探索一下。

import scipy.ndimage as nd    
import numpy as np

n = np.array([ [1,1,1,3,3],[1,2,1,1,2],[1,2,1,3,3] ], dtype=np.int)

def print_coord(val, pos, shape):
print("{}: {}".format(val[0], list(zip(*np.unravel_index(pos, dims=shape)))))
return 0

for val in np.unique(n):
labelled_array, num_features = nd.label(n == val)
nd.labeled_comprehension(n, labelled_array, [1,2,3],
lambda v, p: print_coord(v, p, shape=n.shape), float, 0, True)

输出:

1: [(0, 0), (0, 1), (0, 2), (1, 0), (1, 2), (1, 3), (2, 0), (2, 2)]
2: [(1, 1), (2, 1)]
2: [(1, 4)]
3: [(0, 3), (0, 4)]
3: [(2, 3), (2, 4)]

当您不想保留与该坐标列表匹配的标签时,您当然可以将结果附加到列表中。

关于python - 获取矩阵中重复数字的坐标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40566692/

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