Comment obtenir la différence de temps en secondes à partir de la variable numpy.timedelta64?
time1 = '2012-10-05 04:45:18'
time2 = '2012-10-05 04:44:13'
dt = np.datetime64(time1) - np.datetime64(time2)
print dt
0:01:05
Je voudrais convertir dt
en nombre (int ou float) représentant la différence de temps en secondes.
Vous pouvez y accéder via l'élément datetime "encapsulé":
>>> dt.item().total_seconds()
65.0
Explication : ici dt
est un tableau scalaire dans numpy
, qui est un zéro tableau de rang ou tableau à 0 dimensions. Vous trouverez donc le dt
ici a également toutes les méthodes qu'un ndarray possède, et vous pouvez faire par exemple dt.astype('float')
. Mais il encapsule un objet python, dans ce cas un objet datetime.timedelta
.
Pour obtenir le scalaire d'origine, vous pouvez utiliser dt.item()
. Pour indexer le scalaire du tableau, vous pouvez utiliser la syntaxe quelque peu bizarre de getitem en utilisant un tuple vide:
>>> dt[()]
array(datetime.timedelta(0, 65), dtype='timedelta64[s]')
Cela devrait fonctionner dans toutes les versions de numpy, mais si vous utilisez numpy v1.7 +, il peut être préférable d'utiliser la nouvelle API numpy datetime directement comme expliqué dans la réponse de J.F. Sebastien ici.
Pour obtenir le nombre de secondes de l'objet numpy.timedelta64()
en utilisant numpy
1.7 API datetime expérimentale :
seconds = dt / np.timedelta64(1, 's')