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