J'ai un fichier .py avec une fonction qui calcule le gradient d'une fonction en un point et renvoie la valeur de ce gradient au point. La fonction prend un np.array ([2,]) comme entrée et sort un autre np.array ([2,]). Je ne sais pas comment appeler la fonction à partir de la ligne cmd et exécuter la fonction avec une entrée spécifiée.

Voici un extrait de code:

import numpy as np

def grad(x):
    
    x_1 = x[0]
    x_2 = x[1]
    
    df_dx_1 = 6*x
    df_dx_2 = 8*x_2 
    
    df_dx = np.array([df_dx_1, df_dx_2])
    
    return np.transpose(df_dx)

J'apprécierais vraiment votre aide!

EDIT: Cette question diffère du thread de ligne de commande populaire car j'ai un problème spécifique de ne pas pouvoir reconnaître l'entrée numpy

0
TheQuant 25 oct. 2020 à 20:22

3 réponses

Meilleure réponse

Vous pouvez avoir plus d'un argument de ligne de commande:

import sys
import numpy as np

def grad(x):
   # your grad function here


arr = np.array([int(sys.argv[1]), int(sys.argv[2])])
print(grad(arr))

Usage:

python gradient.py 10 5
0
Wups 25 oct. 2020 à 18:41

Commencez par changer le script en (Ici, il utilise if __name__='__main__' pour vérifier s'il s'exécute à partir du script, puis importez sys et passez le premier argument en utilisant sys.argv[0] à la fonction):

import numpy as np

def grad(x):
    
    x_1 = x[0]
    x_2 = x[1]
    
    df_dx_1 = 6*x
    df_dx_2 = 8*x_2 
    
    df_dx = np.array([df_dx_1, df_dx_2])
    
    return np.transpose(df_dx)

if __name__ == '__main__':
  import sys
  grad(sys.argv[1])

Et appelez-le comme:

python "YOURSCRIPTPATH.py" argument_1
1
Wasif Hasan 25 oct. 2020 à 17:30

Vous pourriez juste quelque chose comme ça dans la ligne de commande:

$ python -c 'from YOURFILE import grad; print(grad(your_argument))'
0
Oliver Hnat 25 oct. 2020 à 17:30