Python:组合和重新排列数组

Python:组合和重新排列数组,python,Python,我有两个阵列: array1=[[1,2], [3,4], [8,9]] array2=[[11,12], [13,14], 19,20]] 如何将阵列组合成如下所示的阵列: array=[([[1,11], [3,13], [8,19]]), array([[[2,12], [4,14], [9,20]])] 提前谢谢你 您可以使用np.concat

我有两个阵列:

array1=[[1,2],
        [3,4],
        [8,9]]

array2=[[11,12],
        [13,14],
        19,20]]

如何将阵列组合成如下所示的阵列:

array=[([[1,11],
       [3,13],
       [8,19]]),
array([[[2,12],
       [4,14],
       [9,20]])]
      


提前谢谢你

您可以使用np.concatenate,第一个输出数组可以通过沿轴=1连接array1和array2的第一列来创建,类似地,对于第二个输出数组,可以从array1和array2中获取第二列

使用:

输出:

>>> new_arr1
array([[ 1, 11],
       [ 3, 13],
       [ 8, 19]])
>>> new_arr2
array([[ 2, 12],
       [ 4, 14],
       [ 9, 20]])
>>> array1
array([[ 1, 11],
       [ 3, 13],
       [ 8, 19]])
>>> array2
array([[ 2, 12],
       [ 4, 14],
       [ 9, 20]])
如果您不想保留原始数组,我们可以进行就地更改,这只会占用一列的额外内存

temp = array1[:, 1].copy()
array1[:, 1] = array2[:, 0]
array2[:, 0] = temp
输出:

>>> new_arr1
array([[ 1, 11],
       [ 3, 13],
       [ 8, 19]])
>>> new_arr2
array([[ 2, 12],
       [ 4, 14],
       [ 9, 20]])
>>> array1
array([[ 1, 11],
       [ 3, 13],
       [ 8, 19]])
>>> array2
array([[ 2, 12],
       [ 4, 14],
       [ 9, 20]])
使用以下命令:

将numpy作为np导入 array_new1=np.数组[[a[0],b[0]]用于ziparray1中的a,b,array2] array_new2=np.数组[[a[1],b[1]]用于ziparray1中的a,b,array2] zip函数将获取许多iterables列表,并并行迭代所有iterables列表的每个元素

所以,这里我只是并行地迭代了两个数组的0个索引元素,以得到新的数组1。它是使用列表理解完成的,这只是使用for循环的另一种形式。
对于新数组2,我并行地迭代了两个数组的1个索引元素,并使用列表理解将它们组合起来。

回答得好,但如果你能解释一下列表理解和zip,那就太好了。@AlexMetsai谢谢你的评论,我已经尽力解释了答案:谢谢你的更新,我已经对你的答案投了赞成票-