首页 > 解决方案 > 用于创建任意大小的方阵的 Python 函数

问题描述

我需要创建一个函数,它可以采用未指定数量的参数(矩阵的元素)并返回相应的方阵。我已经使用以下方法实现了这一点。

def square_matrix(size, *elements):

    numbers = list(elements)
    if size ** 2 != len(numbers):
        return "Number of elements does not match the size of the matrix"
    else:
        matrix = []
        factor = 0
        for i in range(0, size):
            row = []
            for j in range(factor * size, (factor + 1) * size):
                row.append(numbers[j])
            factor += 1
            matrix.append(row)
            i += 1
        return matrix

print(square_matrix(3, 1, 2, 3, 4, 5, 6, 7, 8, 9))
# Output: [[1, 2, 3], [4, 5, 6], [7, 8, 9]]

虽然这种方法适用于较小的矩阵,但它似乎有点低效,因为它使用嵌套循环并且对我来说显得不必要的长。有没有更好/更简洁的实现方式?

标签: pythonarraysmatrix

解决方案


只使用 NumPy 可以吗?

import numpy as np

def square_matrix(size, *elements):
    return np.array(elements).reshape(size, size)

推荐阅读