在python中,如何使用不重复的迭代循环用不同的数字填充numpy数组?

2024-09-29 23:20:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我想做一个这样的数组。你知道吗

arr =[[1 2 3 4],
      [1 2 3 4],
      [2 2 3 4],
      [5 5 5 4]]

我有五个数组。你知道吗

   arr0= [[0 0 0 0],
          [0 0 0 0],
          [0 0 0 0],
          [0 0 0 0]]

   arr1= [[1],
          [1]]

   arr2= [[0 2],
          [0 2],
          [2 2]]

   arr3= [[3],
          [3],
          [3]] 

   arr4= [[4],
          [4],
          [4],
          [4]] 

   arr5= [[5],[5],[5]]

但问题是没有给出数组的顺序。 此外,不允许重复阵列。 在这种情况下,如何使用迭代循环使右拟合数组形成?你知道吗

我想用这个函数和索引切片

#  Usage:
#  addAtPos(xycoor)
#    - mat1  : matrix to be added
#    - mat2  : add this matrix to mat1
#    - xycoor: tuple (x,y) containing coordinates
def addAtPos(mat1, mat2, xycoor):
    size_x, size_y = np.shape(mat2)
    coor_x, coor_y = xycoor
    end_x, end_y   = (coor_x + size_x), (coor_y + size_y)
    mat1[coor_x:end_x, coor_y:end_y] = mat1[coor_x:end_x, coor_y:end_y] + mat2
    return mat1

但是很难做出完美的形式。。 请帮帮我!你知道吗


Tags: tosize数组matrixendarrarr1arr2
1条回答
网友
1楼 · 发布于 2024-09-29 23:20:42

这是一个优化问题,可能会变得非常困难。你知道吗

只使用一个简单的循环,你会被卡住,所以在某个时候,你将不得不回到一些移动,并重做他们在不同的位置。你知道吗

你可以尝试的一件事是使用一棵树来跟踪可能的移动和到远处所做的移动。另外,从使用“大”件开始,可以让你在树上做一些早期修剪。你知道吗

示例:

以4矩阵为第一矩阵。您只有4个可能的位置可以放置它:列1、2、3或4,因此您可以从根节点创建4个分支。你知道吗

现在,如果你拿第5块,你可以看到,如果你的第一步是在列1,2或3,它将不适合任何地方。所以这会让你倾向于这个分支。现在你肯定知道矩阵4在第四列。你知道吗

类似地,在更深层次上,您将丢弃其他片段的位置,直到找到树的一片叶子(所有片段都与矩阵匹配的节点)。你知道吗

但是请注意,如果矩阵太大或您有太多的片段,此算法可能需要太长的时间来解决问题。你知道吗

相关问题 更多 >

    热门问题