首页 > 试题广场 >

重塑矩阵

[编程题]重塑矩阵
  • 热度指数:1223 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
在机器学习中,我们经常需要对矩阵进行重塑(reshape)操作。给定一个矩阵,将其重塑为一个新的矩阵,但保持其原始数据。
如果重塑前后的元素总数不相同,返回-1
重塑操作应当满足:
1. 新矩阵的元素总数必须与原矩阵相同
2. 原矩阵中的元素在新矩阵中的相对顺序不变

输入描述:
第一行输入要重塑的矩阵。
第二行输入目标矩阵的行数和列数。


输出描述:
输出重塑后的矩阵,返回形式以list形式。
示例1

输入

[[1, 2], [3, 4]]
(1, 4)

输出

[[1, 2, 3, 4]]
示例2

输入

[[1, 2, 3]]
(5, 1)

输出

-1

说明

重塑前后元素总数不相等,返回-1

备注:
1. Python3对应的输入、输出已给出,您只用实现核心功能函数即可。
2. 支持numpy、scipy、pandas、scikit-learn库。
from typing import List, Tuple, Union
import numpy as np

def reshape_matrix(a: List[List[Union[int, float]]], new_shape: Tuple[int, int]) -> List[List[Union[int, float]]]:
    n, m = new_shape
    flatten = []
    for t in a:
        flatten.extend(t)
    if len(flatten) != n * m:
        return -1
    #print(flatten)
    ans = []
    for i in range(n):
        ans.append(flatten[i*m:(i+1)*m])
    return ans

def main():
    try:
        a = eval(input())
        new_shape = eval(input())
        result = reshape_matrix(a, new_shape)
        print(result)
    except Exception as e:
        print(f"输入格式错误: {e}")

if __name__ == "__main__":
    main()

发表于 2025-08-10 14:13:09 回复(0)