假设我有两个不同形状的矩阵A
和B
。我想在十字路口比较它们。
即A
= a1
x a2
和B
= b1
x b2
。让
A = np.ones((3, 4))
B = np.ones((5, 2))
然后交叉点将是(3, 2)
。下一步是将两个矩阵都裁剪为(3, 2)
并进行比较。
我能够使用numpy
来做这些事情,但这看起来效率很低而且不够优雅。对于二维A
,B
来说,实现这一目标的简洁方法是什么?
答案 0 :(得分:2)
如果我理解正确,您正在寻找适合A
和B
内部的最大可能子阵列。您可以只比较A
和B
的每个维度,并选择最小的维度:
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]
。