如何在Python的3-d数组中交换值?

问题描述 投票:0回答:1

我有一个矩阵(3x5),在该矩阵中随机选择一个数字。我想将选定的号码与右下角的一个交换。我能够找到随机选择的数字的索引,但不确定如何用向下然后向右的数字替换它。例如,给定矩阵:

[[169 107 229 317 236]
 [202 124 114 280 106]
 [306 135 396 218 373]]

且所选数字为280(位于[1,3]中),需要与[2,4]上的373交换。我在如何处理索引方面遇到问题。我可以对其进行硬编码,但是当随机选择要交换的数字时,它将变得更加复杂。

如果选择的数字在[0,0]上,则硬编码看起来像:

selected_task = tard_generator1[0,0]
right_swap = tard_generator1[1,1]
tard_generator1[1,1] = selected_task
tard_generator1[0,0] = right_swap

欢迎提出任何建议!

python multidimensional-array matrix-indexing
1个回答
0
投票

怎么样?

chosen = (1, 2)
right_down = chosen[0] + 1, chosen[1] + 1

matrix[chosen], matrix[right_down] = matrix[right_down], matrix[chosen]

将输出:

>>> a
array([[ 0,  1,  2,  3,  4],
       [ 5,  6,  7,  8,  9],
       [10, 11, 12, 13, 14],
       [15, 16, 17, 18, 19],
       [20, 21, 22, 23, 24]])
>>> index = (1, 2)
>>> right_down = index[0] + 1, index[1] + 1
>>> a[index], a[right_down] = a[right_down], a[index]
>>> a
array([[ 0,  1,  2,  3,  4],
       [ 5,  6, 13,  8,  9],
       [10, 11, 12,  7, 14],
       [15, 16, 17, 18, 19],
       [20, 21, 22, 23, 24]])

应该进行边界检查,但省略

© www.soinside.com 2019 - 2024. All rights reserved.