脾气暴躁:将列表转换为方形数组

时间:2019-02-22 16:36:21

标签: python arrays list numpy reshape

我有一个列表l,其中包含正方形的元素,例如16、25、400。 现在,要创建一个大小为零但为正方形的,由零组成的numpy数组a,例如4x4、5x5、20x20。

我找到了解决方法:

a = np.zeros(2 * (int(np.sqrt(len(l))),))

a = np.zeros(len(l)).reshape(int(np.sqrt(len(l))), int(np.sqrt(len(l))))

它正在工作,但是非常丑陋,我相信必须有更好的方法来做到这一点。 类似于a = np.zeros(l, 2)。 有什么想法吗?

谢谢! :)

2 个答案:

答案 0 :(得分:1)

您可以尝试:

shp = int(np.sqrt(len(l))
a = np.zeros((shp, shp))

答案 1 :(得分:1)

您可以像这样清理它:

size = len(l)
sqrt = int(np.sqrt(size))
a = np.zeros((sqrt, sqrt))

每次您多次编写同一段代码时,最好将其替换为变量,函数等。