Python 数组:给定两个数组 A 和 B,如何有效地组合它们,使得输出是一个数组,其中每个元素都是一个元组 (Aij,Bij)?)

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

考虑两个数组 A 和 B,维度均为 NxN。 我希望生成一个新数组 NxN,这样每个新元素都是类型 (A_ij,B_ij) 的元组(或列表,并不重要)。

我可以通过逐个元素运行来做到这一点,例如:


def recombine(A,B):
    NewArray=[]
    for i in range(len(A)):
        NewArray.append([])
        for j in range(len(B)):
            NewArray[i].append(A[i][j],B[i][j])
    return NewArray

这是一个非常消耗内存的算法。

我想知道是否有更有效的方法(利用 numpy 数组来做到这一点)。

为了澄清这一点,让我们考虑以下示例(为了简单起见,我考虑使用简单列表而不是 np 数组):

A=[[1,2],[3,4]]
B=[[10,20],[30,40]]

#I want an output in the form:

[[(1,10),(2,20)],[(3,30),(4,40)]]

提前致谢, 做

python numpy numpy-ndarray memory-efficient
1个回答
0
投票

我认为 np.dstack 可以在这种情况下使用,但是。您可以使用内置的zip功能

A=[[1,2],[3,4]]
B=[[10,20],[30,40]]

def recombine(A,B):
    return [list(zip(A[i], B[i])) for i in range(len(A))]

print(recombine(A,B))
import numpy as np

print(np.dstack((A,B)))
© www.soinside.com 2019 - 2024. All rights reserved.