最好的矩阵,数量相同

问题描述 投票:0回答:3

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

我想要一个像n = 3 == [(3,3,3)(3,3,3),(3,3,3)]这样的矩阵

我目前用ones_matrix(n) * somenumber这样做

然而,这需要一段时间与一个大的n,有一个更快的方式在圣人这样做吗?

谢谢你的帮助

python math linear-algebra sage
3个回答
1
投票

您可以像这样使用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]]

1
投票

一种捷径是:

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)


1
投票

如果您想使用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更改为相应的环。

© www.soinside.com 2019 - 2024. All rights reserved.