首页 > 解决方案 > 通过python中给定数量的元素生成大小均匀的矩阵?

问题描述

我有一个包含n项目的 python 列表。

我想将项目放置在(几乎)大小均匀的矩阵中。即矩阵形状应尽可能接近正方形。这里有些例子。

标签: python

解决方案


我的方法如下:

  1. 任意数量的项目n_items,必须介于n^2和之间(n+1)^2
  2. 因此,要获得“几乎”均匀分布,我们可以将矩阵设为n*(n+1)(n+1)*(n+1)
  3. 简单地n_items与这两个维度的乘积进行比较,就可以得到所需的矩阵大小。如果n_items小于n*(n+1),我们将使用n x (n+1)and(n+1) x (n+1)否则。

这是一个示例代码:

from math import floor,ceil,sqrt

def even_matrix_size(n_items):

    sq_root = sqrt(n_items)
    lower_bound = floor(sq_root)
    upper_bound = ceil(sq_root)

    if n_items <= lower_bound*upper_bound:
        return lower_bound,upper_bound
    else:
        return upper_bound,upper_bound

print(even_matrix_size(7))

推荐阅读