python - 比较不同形状的矩阵

标签 python numpy scipy

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

即,A = a1xa2B = b1 xb2。让

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

那么交集就是(3, 2)。下一步是将两个矩阵裁剪为 (3, 2) 并进行比较。

我可以使用numpy来完成这些事情,但这一切看起来都非常低效且不优雅。对于二维 AB 来说,实现这一目标的简短而简洁的方法是什么?

最佳答案

如果我理解正确的话,您正在寻找适合 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]

关于python - 比较不同形状的矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36549655/

相关文章:

python - 在 Python 中获取 td 的完整文本 (lxml)

python - 在python中递归地向字符串添加行

python - 如何使用python将像素列表转换为图像

python - 将 2D 数组添加到 3D 数组

python - 如何生成等距插值

python - GLM R 与 Python

python - 应用 TensorFlow Transform 来转换/缩放生产中的特征

python - 如何从位于数组顶部的多边形内的 NumPy 二维数组中提取值?

python - 从 UnivariateSpline 对象获取样条方程

python - 为什么这个 log gamma numba 函数对于大型数组比 scipy 慢,但对于单个值却比 scipy 慢?