比较不同形状的矩阵

时间:2016-04-11 13:08:47

标签: python numpy scipy

假设我有两个不同形状的矩阵AB。我想在十字路口比较它们。

A = a1 x a2B = b1 x b2。让

A = np.ones((3, 4))
B = np.ones((5, 2))

然后交叉点将是(3, 2)。下一步是将两个矩阵都裁剪为(3, 2)并进行比较。

我能够使用numpy来做这些事情,但这看起来效率很低而且不够优雅。对于二维AB来说,实现这一目标的简洁方法是什么?

1 个答案:

答案 0 :(得分:2)

如果我理解正确,您正在寻找适合AB内部的最大可能子阵列。您可以只比较AB的每个维度,并选择最小的维度:

def largest_subarray(A, B):
    dims = np.minimum(A.shape, B.shape)         # find smallest dimensions
    idx = tuple(slice(None, dd) for dd in dims) # construct tuple of slice indices
    return A[idx], B[idx]                       # index into A and B

对于您的示例数组,它将返回A[:3, :2], B[:3, :2]