Gérez les tableaux numpy avec f2py

Analysez les données numpy à l'aide de f2py

numpy est pratique pour gérer les données, mais Python a une boucle for lente, il n'y a donc aucun moyen de bien faire la différenciation. Si vous n'écrivez que la partie différentielle dans fortran avec f2py, vous pouvez accélérer. Les opérations de différenciation sont communes à de nombreuses analyses, donc une fois que vous les notez, vous pouvez les utiliser.

Veuillez vous référer au manuel officiel de f2py à ici.

code fortran

Il semble qu'il soit basique d'écrire une fonction à l'aide d'un sous-programme. Les bases sont les suivantes

Par exemple, une «fonction qui ajoute 1 à un tableau et renvoie» peut être écrite comme suit. Le nom du fichier doit être f2py_test.f90 etc.

subroutine add(qq,ix,qq_add)
  implicit none
  
  integer :: i
  integer, intent(in) :: ix
  real(8), dimension(ix), intent(in) :: qq
  real(8), dimension(ix), intent(out) :: qq_add
  
  do i = 1,ix
    qq_add(i) = qq(i) + 1
  enddo

  return
end subroutine add

compiler

f2py --fcompiler=gfortran -m f2py_test -c --f90flags='-O3' f2py_test.f90

Et. Assurez-vous d'ajouter l'option -c et d'écrire le nom du fichier à compiler à la fin. Chaque option est ci-dessous

---- compiler = : spécification du compilateur fortran ---m: nom du module lorsqu'il est utilisé en Python (il ne doit pas nécessairement être le même que le nom du fichier) ---- f90flags = : Options utilisées par le compilateur fortran

Utilisation du code fortran de Python

Lorsque vous utilisez f2py depuis Python, procédez comme suit.

import f2py_test #Importer des modules compilés avec f2py
import numpy as np
ix = 5
qq = np.zeros(ix) #Définissez correctement le tableau numpy
qq_add = f2py_test.add(qq,ix) #Appelez la fonction définie dans f2py

Puisque qq_add défini dans le code fortran est défini comme ʻintent (out), il est jugé comme une valeur de retour et n'est pas inclus dans l'argument de la fonction. D'autre part, dans le code ci-dessus, la taille du tableau ʻix est également incluse comme argument de la fonction, mais dans f2py, la taille du tableau est automatiquement déterminée et utilisée comme variable optionnelle, puis automatiquement `len (qq). Il remplace ». Donc,

qq_add = f2py_test.add(qq)

Le résultat est le même.

Ce que je ne touche pas mais que je veux toucher

À la fin

Lors de l'analyse d'une séquence de numpy, je voudrais abaisser la barrière de l'esprit en utilisant f2py et accélérer l'analyse.

Recommended Posts

Gérez les tableaux numpy avec f2py
Gérer numpy avec Cython (méthode par memoryview)
[Rust / Python] Gérer numpy avec PyO3 (version d'août 2020)
Moyenne mobile avec numpy
Gérez Excel avec python
Manipuler rabbimq avec python
Premiers pas avec Numpy
Apprenez avec Chemo Informatics NumPy
Concaténation de matrices avec Numpy
Code de bourdonnement avec numpy
Effectuer une analyse de régression avec NumPy
Étendre NumPy avec Rust
Calculer l'entropie pour un tableau avec zéro élément dans Numpy
Somme de plusieurs tableaux numpy (somme)
J'ai écrit GP avec numpy
Génération artificielle de données avec numpy
[Python] Méthode de calcul avec numpy
Essayez l'opération matricielle avec NumPy
Animation de l'équation de diffusion avec NumPy
Simulation de remboursement de dette avec numpy
Implémentation de SMO avec Python + NumPy
Coller les chaînes avec Numpy
Utilisez OpenBLAS avec numpy, scipy
Travailler avec des fichiers JSON dans Matlab
Implémentation de la régression logistique avec NumPy
Gérez les clés Base91 avec python + redis.
Gérer les fichiers csv avec Django (django-import-export)
Gérez facilement les listes avec python + sqlite3
Dessinez un beau cercle avec numpy
Implémenter Keras LSTM feed forward avec numpy
Gérer les fichiers Excel CSV avec Python
Extraire plusieurs éléments avec le tableau Numpy
Gère divers formats de date avec des pandas