【问题标题】:moving rows in 2D arrays在二维数组中移动行
【发布时间】:2018-09-16 14:30:49
【问题描述】:

我目前有一个这样的二维数组

array = [ [a1, a2, a3, a4],
          [b1, b2, b3, b4],
          [c1, c2, c3, c4],
          [d1, d2, d3, d4],
        ]

我想做的是将数组更改为:

array = [ [b1, b2, b3, b4],
          [c1, c2, c3, c4],
          [d1, d2, d3, d4],
          [a1, a2, a3, a4],
        ]

我希望有一种方法可以将“a”行保存到变量中并将其从二维数组中删除,然后稍后将其添加回末尾。 感谢您的帮助。

【问题讨论】:

  • 请展示您的尝试。您似乎知道所涉及的步骤,您从研究中实施了什么?
  • 既然你已经有一个 numpy 数组,np.roll 在我看来是最好的解决方案,但我猜这不是你想要的,因为你指定的条件

标签: python arrays python-3.x multidimensional-array 2d


【解决方案1】:
def alter(array,removeRow,addRow):
    temp = array[removeRow]
    del array[removeRow]
    array.insert(addRow,temp)

【讨论】:

  • 对于删除行和添加行,我是否会执行类似 a[1] 或 a[1][1] 的操作?
  • 虽然此代码可能会回答问题,但提供有关它如何和/或为什么解决问题的额外上下文将提高​​答案的长期价值。
【解决方案2】:

您可以编写一个函数,将一行从一个位置移动到另一个位置。像下面这样:

def move(matrix, src, dst):
    tmp = matrix[src]
    del matrix[src]
    matrix.insert(dst, tmp)

然后您必须使用适当的值使用src(源索引)和dst(目标索引)调用它。

例如:

matrix = [
    [ 1, 2, 3 ],
    [ 4, 5, 6 ],
    [ 7, 8, 9 ],
]

move(matrix, 1, 0)

# Now matrix is:
# [
#    [ 4, 5, 6 ],
#    [ 1, 2, 3 ],
#    [ 7, 8, 9 ],
# ]

【讨论】:

  • 对于删除 src 和 dst 我会做类似 a[1] 或 a[1][1] 的事情吗?
  • 我不确定我是否理解您的问题。上面的函数确实移动了一整行(我在答案中添加了一个示例)。
  • 对不起,我没有看到你的例子。感谢您的帮助!
猜你喜欢
  • 2021-02-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多