假设我有两个不同形状的矩阵,A
和 B
。我想在十字路口比较它们。
即,A
= a1
xa2
和 B
= b1
xb2
。让
A = np.ones((3, 4))
B = np.ones((5, 2))
那么交集就是(3, 2)
。下一步是将两个矩阵裁剪为 (3, 2)
并进行比较。
我可以使用numpy
来完成这些事情,但这一切看起来都非常低效且不优雅。对于二维 A
、B
来说,实现这一目标的简短而简洁的方法是什么?
最佳答案
如果我理解正确的话,您正在寻找适合 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]
。
关于python - 比较不同形状的矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36549655/