当前位置: 首页 > 知识库问答 >
问题:

获取矩阵中重复数的坐标

钦良弼
2023-03-14

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

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

重复项[[[0,0],[1,0],[2,0],[0,1],[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]]

共有1个答案

喻选
2023-03-14

效率不是很高,因为在逻辑比较检查中多次使用测试数组,但大多数循环都被推到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)]

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

 类似资料:
  • 基本上,我的代码是这样的: 我有一个名为cam的正交相机和一个名为batch的sprite批处理。 我想要的是要在 InputProcessor 类中创建一个矩形,该矩形与使用子画面批处理绘制的纹理区域具有相同的 x、y、宽度和高度,以便我可以触摸检测该纹理。 但是当我用“Rock.getTextureRegion.y”或“x”作为我的Bounds矩形的参数时,边界就大不相同了。 是因为那个输入类

  • 在R编程中,如何子集一个矩阵,以便跳过中间的列?我只知道如何像1:4那样连续地做,但是如果我想要第一、第二和第四个柱呢

  • 我有一个非常大的矩形(100,000x100,000),我试图在上面随机放置许多不同大小的圆。我目前的解决方案是将以前使用的所有坐标对存储在一个地图中,然后随机生成一个新的对,并检查它是否存在于地图中。 因为我生成了很多坐标,所以这个方法会变得有点慢。有没有一个更好,最重要的是更快的方法来得到矩形上的随机坐标,也许也有一个方法来得到它们而不是圆重叠?

  • 我目前正在做一个音频信号处理项目,需要在Java中的一个复杂矩阵上使用SVD。我当前的线性代数库是Apache Commons。但它只提供实矩阵的SVD,JAMA、JBLAS、EJML、ojAlgo都不支持复杂的SVD。 我一直在用一些技巧从一个等效的实矩阵中找到SVD。然而,当我重建矩阵时,这种技术对于虚部有很大的不准确性。

  • 问题内容: 我试图在OpenGL中使用gluUnProject,首先我需要获取projectoin,model_view和viewort矩阵。根据我在网上找到的例子 但是我收到错误消息“ ValueError:glGetFloatv需要1个参数(pname),收到2:(GL_PROJECTION_MATRIX,[])” 那么,我应该使用什么来获取这些矩阵? 问题答案: 也许: 之后在变量中应该是投

  • 问题内容: 我需要递归地对子矩阵进行并行处理(将原始矩阵分为4个并传递给一个方法)。矩阵存储为2D数组。我不能每次都将元素复制到一个新的矩阵,因为事实证明这是非常昂贵的。是否有某种方式可以引用Java中的子矩阵? 也许,这个问题不清楚,我在[这里]http://codingdict.com/questions/131438)没有得到答案。 问题答案: 我将为数据编写一个包装器,并将其称为Matri