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谢谢你的评论,我已经尽力解释了答案:谢谢你的更新,我已经对你的答案投了赞成票-