2017-07-22 2 views
1

Est-ce que numpy a une implémentation intégrée pour une représentation modulaire des matrices?Est-ce que Numpy possède une implémentation d'exponentiation modulaire matricielle par éléments incorporée?

(Comme l'a souligné user2357112, je suis à la recherche de l'élément sage réduction modulaire)

Une façon exponentiation modulaire sur le nombre régulier est effectué est avec exponentiation rapide (https://en.wikipedia.org/wiki/Exponentiation_by_squaring), avec une réduction modulaire prise à chaque étape. Je me demande s'il existe une solution intégrée similaire pour la multiplication matricielle. Je suis conscient que je peux écrire du code pour l'imiter facilement, mais je me demande s'il existe une solution intégrée.

+0

Je n'étais pas au courant d'une opération de module matriciel. Voulez-vous un module par élément? (Essayez-vous d'effectuer des calculs matriciels dans un domaine fini?) – user2357112

+0

Oui c'est exactement ce que j'essayais de faire! Désolé, j'ai supposé que le module de matrice signifiait élément sage module –

+1

Voir https://github.com/numpy/numpy/issues/8804 – FTP

Répondre

1

L'exponentiation modulaire n'est actuellement pas construite en NumPy (GitHub issue). Le moyen le plus/le plus paresseux façon d'y parvenir est frompyfunc:

modexp = np.frompyfunc(pow, 3, 1) 
print(modexp(np.array([[1, 2], [3, 4]]), 2, 3).astype(int)) 

impressions

[[1 1] 
[0 1]] 

Ceci est bien sûr plus lent que NumPy natif serait, et nous obtenons un tableau avec DTYPE = objet (d'où astype(int) est ajoutée).