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

在python中,如何使用迭代循环使用不同的数字填充numpy数组而不重复?,python,arrays,numpy,iteration,Python,Arrays,Numpy,Iteration,我想做一个这样的数组 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

我想做一个这样的数组

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
但是很难做出完美的姿势。。
请帮帮我

这是一个优化问题,可能会变得非常困难

只使用一个简单的循环,你会被卡住,所以在某个时候,你必须返回一些动作,并在不同的位置重做它们

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

例如:

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

现在,如果你拿第5块,你可以看到,如果你的第一步是在第1、2或3列,它将不适合任何地方。因此,这将允许您创建这些分支。现在你肯定知道矩阵4在第四列

类似地,在更深层次上,您将放弃其他片段的位置,直到找到树的一片叶子(一个所有片段都符合矩阵的节点)


但是请注意,如果矩阵太大或者你有太多的块,这个算法可能需要太长的时间来解决问题。

那么,你基本上想解决一个难题吗?是的!我想解决一个难题!:)哇!非常感谢你!实际上,我也考虑了DFS(深度优先遍历),但是,我不知道如何使用DFS代码为这个问题绘制一个图。。。图特