我很难用最有效(即:最快)的方法对2dnumpy数组进行迭代更改,也无法跟踪对该数组所做的更改
在我的特殊问题中,我试图改变2D数组的元素,如下所示:
import numpy as np
a1 = np.array([ [2, 1, 4, 2],
[1, 2, 3, 3],
[1, 2, 1, 1],
[2, 3, 5, 6]
])
new_arrays1 = []
for i in range(0, a1.shape[0]):
for j in range(0, a1.shape[1] - 1):
a1_move = np.copy(a1)
a1_move[i, j], a1_move[i, j + 1] = a1_move[i, j + 1], a1_move[i, j]
new_arrays1.append(a1_move)
new_arrays2 = []
for a2 in new_arrays1:
for i in range(0, a2.shape[0]):
for j in range(0, a2.shape[1] - 1):
a2_move = np.copy(a2)
a2_move[i, j], a2_move[i, j + 1] = a2_move[i, j + 1], a2_move[i, j]
new_arrays2.append(a2_move)
也就是说,我逐个移动2D数组a1
每行中所有可能的元素,并创建12(4x4)个新数组。然后,我移动新的12个数组中每一行中所有可能的元素,总共创建12x12=144个新数组
我的问题是:有没有什么数据结构/技术/东西可以让我知道我采取了什么步骤(移动数组)来达到最后的144个数组?我知道对于上面的例子,矩阵new_arrays[0]
导致所有矩阵new_arrays2[0:11]
。不过,我也想知道为达到new_arrays2[0:11]
中的数组所采取的措施
在我的完整代码中,初始数组(a1
)是12x6。此外,我需要对矩阵执行两次以上的这些操作,很可能总共执行4-5次(这意味着要分析的矩阵总数为60^4或60^5),这意味着我需要一个有效的解决方案来解决这个问题
我的最终目标是分析最后一步中的所有数组(即上面示例中的第2步),推断出哪个数组是“最佳”的,并使用对初始数组所做的移动来达到代码中的这个“最佳”数组
目前没有回答
相关问题 更多 >
编程相关推荐