首页 > 解决方案 > 如何切割更大的矩阵并匹配更小的矩阵的形状

问题描述

我有两个不同长度的矩阵列表。

例如

X中矩阵的长度:

Y中的矩阵长度:

我的问题是我有一个循环,它将减去矩阵,例如(X[0]-Y[0]),然后是(X[0]-Y[1])等等。由于它们具有不同的形状,我必须创建一个对矩阵进行切片的代码。

for x in range (len(X)):
   for y in range (len(Y)):
      if len(X[x])> len(Y[y]):
         X_a = len(X[x]) - len(Y[y])
         X_len = len(X[x]) - X_a

我要去这里的某个地方吗?对不起。这让我很困惑。:(

标签: pythonlistmatrixslicecut

解决方案


从代码看来,当您想要减去两个矩阵时,您想要将减法直到较小矩阵的长度。为此,您可以使用以下功能:

def subtract_matricies(mat1, mat2):
    minimum_len = min(len(mat1), len(mat2))
    return mat1[:minimum_len]-mat2[:minimum_len]

然后在你的主循环中使用这个函数:

result=[]
for x in X:
    for y in Y:
        result.append(subtract_matricies(x,y))

推荐阅读