Python 填充矩阵以使高度与numpy相等

Python 填充矩阵以使高度与numpy相等,python,numpy,matrix,pad,Python,Numpy,Matrix,Pad,我有一个矩阵列表,其中一些矩阵的高度(.shape[0])比其他矩阵大,我想让它们的高度相等。因此,我想找出最大矩阵的高度,并用不同的矩阵来增加矩阵的其余部分,从而使AMTIX的内容保持在中间。(如果差异不是偶数,则在底部比顶部多添加一行。到目前为止,这是我的代码: def equalize_heights(matrices,maxHeight): newMatrices = [] matricesNum = len(matrices) for i in xrange(m

我有一个矩阵列表,其中一些矩阵的高度(.shape[0])比其他矩阵大,我想让它们的高度相等。因此,我想找出最大矩阵的高度,并用不同的矩阵来增加矩阵的其余部分,从而使AMTIX的内容保持在中间。(如果差异不是偶数,则在底部比顶部多添加一行。到目前为止,这是我的代码:

def equalize_heights(matrices,maxHeight):
    newMatrices = []
    matricesNum = len(matrices)
    for i in xrange(matricesNum):
        matrixHeight = matrices[i].shape[0]
        if (matrixHeight == maxHeight):
            newMatrices.append(matrices[i])
        else:
            addToTop = (maxHeight-matrixHeight)/2
            addToBottom = (maxHeight-matrixHeight)/2 +((maxHeight-matrixHeight)%2)
现在,没有最大矩阵高的矩阵应该在martrix的顶部添加“addToTop”行(行填充为0),在底部添加“addToBottom”行


我想我应该使用NUPY.PAD函数,但我不太明白。

记住,在每个维度中,代码垫子,而不仅仅是高度。考虑使用<代码> NP.CONTATEATION<代码>。注意,你不需要通过最大高度——你的函数只能计算它自己。

例如:


请注意,这将不会以您想要的方式居中矩阵,但这应该不会太困难。(将元组中的三个数组连接起来,而不是两个。

记住,在每个维度中,代码< NP.Pad < /Calp>垫子,而不只是高度。考虑使用<代码> NP。级联< < /代码>。还要注意,您不需要通过最大高度。您的函数只能计算它自己。

例如:


请注意,这将不会以您想要的方式居中矩阵,但这应该不会太困难。(在元组中放置三个数组来连接,而不是两个。

为什么不继续编写调用
numpy.pad
的代码,看看它是如何运行的。我一直在添加列,行的isntead为什么不继续编写调用
numpy.pad
的代码,看看它是如何运行的。我一直在添加列,行的isntead
import numpy as np
matrices = [np.array([[1,2], [1,2]]), np.array([[1,2], [1,2], [1,2]])]
def equalize_heights(matrices):
    max_height = matrices[0].shape[0]

    for matrix in matrices[1:]:
        max_height = max(max_height, matrix.shape[0])

    for idx, matrix in enumerate(matrices):
        matrices[idx] = np.concatenate((
            matrix,
            np.zeros((max_height - matrix.shape[0], matrix.shape[1]))
            ))