我想创建一个 python 函数来连接几个矩阵,这是两个矩阵的例子:
def create_matrix(number,rows,columns):
matrix=np.full((rows,columns),number)
return matrix
matrix1=create_matrix(0,1,2)
matrix2=create_matrix(1,1,3)
matrix3=create_matrix(2,1,4)
def concatenate_matrix(matrix1,matrix2):
vector_pacient=np.hstack((matrix1,matrix2))
return vector_pacient
print(concatenate_matrix(matrix1,matrix2))
print('result',concatenate_matrix(matrix1,matrix2).shape)
这对我得到的两个矩阵非常有效:
[[0 0 1 1 1]]
result shape (1, 5)
如我所愿,现在我想连接可变数量的矩阵,我试过:
def concatenate_matrix2(*args):
for arg in args:
print(arg.shape)
vector_pacient=np.hstack(arg)
return vector_pacient
print(concatenate_matrix2(matrix1,matrix2,matrix3))
print(concatenate_matrix2(matrix1,matrix2,matrix3).shape)
但是我得到了:
(1, 2)
(1, 3)
(1, 4)
[2 2 2 2]
(1, 2)
(1, 3)
(1, 4)
result shape (4,)
我不明白错误在哪里,它的形状应该是:
(1,9)
和一个矩阵如下:
[[0 0 1 1 1 2 2 2 2]]
所以我想感谢修复我的代码的建议。
你的for
循环有错误。您似乎想要执行以下操作:
def concatenate_matrix2(*args):
vector_pacient = args[0]
for i in range(1, len(args)):
vector_pacient = np.hstack((vector_pacient, args[i]))
return vector_pacient
或更简洁地说:
def concatenate_matrix2(*args):
return np.hstack(args)
或者:
def concatenate_matrix2(*args):
return np.concatenate(args, axis=1)
(...只有在除串联轴之外的所有矩阵的维度完全匹配时才有效 - 它在这里有效,因为维度0
具有相同的大小1
)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句