充满相同数字的最佳矩阵
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
更改为适当的环。
我想创建一个 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
更改为适当的环。