充满相同数字的最佳矩阵

best matrix full of same number

我想创建一个 n x n 矩阵,其中 n 是一个大数,在 sage 中最快的方法是什么?

我想要一个矩阵,例如 n = 3 == [(3,3,3)(3,3,3),(3,3,3)]

我目前使用 ones_matrix(n) * somenumber

然而,如果 n 很大,这需要一段时间,在 sage 中有更快的方法吗?

感谢您的帮助

一个捷径是:

n=int(input())
tup=tuple((n,))*n
#gives (n,n,n,...…,n) n times

ar=list((tup,)*n)
#would give ar=[(n,n,.....,n),(n,n,n,.....,n),...…..(n,n,n,...…,n)]

或一气呵成: ar=list((tuple((n,))*n,)*n)

您可以像这样使用 numpy.full() 函数:

>>> import numpy as np
>>> arr = np.full((3, 3), 3)
>>> arr
[[3 3 3]
 [3 3 3]
 [3 3 3]]
>>> arr2 = np.full((3, 3), 7)
>>> arr2
[[7 7 7]
 [7 7 7]
 [7 7 7]]

如果你想使用 Sage 矩阵,你可以这样做:

sage: M = MatrixSpace(ZZ, 10000, 10000)
sage: a = M.matrix([3]*10000*10000)

在我的电脑上,这大约需要 6 秒,与 ones_matrix(10000) 相同,比 3 * ones_matrix(10000) 快。不如 numpy 解决方案快,但结果是 Sage 矩阵。请注意,如果您想使用非整数条目,您应该将 ZZ 更改为适当的环。