лучшая матрица, полная того же номера - PullRequest
0 голосов
/ 14 апреля 2019

Я хотел бы создать матрицу тревог с n большим числом, каков самый быстрый способ сделать это в sage?

Я хотел бы такую ​​матрицу, как, например, n = 3 == [(3,3,3)(3,3,3),(3,3,3)]

В настоящее время я делаю это с ones_matrix(n) * somenumber

Однако это занимает некоторое время с большим n, есть ли более быстрый способ сделать это в мудреце?

Спасибо за помощь

Ответы [ 3 ]

1 голос
/ 14 апреля 2019

Вы можете использовать функцию 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 голос
/ 16 апреля 2019

Если вы хотите работать с матрицами 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 на соответствующее кольцо.

1 голос
/ 14 апреля 2019

Сокращенный путь может быть:

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)

...