2012-03-31 1 views
0

J'ai des difficultés à multiplier le type de données numpy timedelta64 par des flottants.Python: division et multiplication du type timedelta64 avec des flottants

Pour une tâche, j'ai besoin de calculer la période d'une étoile en utilisant la deuxième loi de Kepler. Il y a beaucoup de points de données, donc je veux python pour calculer la zone située entre 2 positions et le diviser par la période, en utilisant le code suivant:

D = data['data'] 
vect = D-c #Data point minus center of ellipse 
date = data['time'] #time for data point in np.timedelta64 
Area_tot = np.pi*np.sqrt(chi[0])*np.sqrt(chi[1]) #total area of ellipse 
P = np.array([]) 
for i in range(1,len(D[0])): 
    Area = LA.norm(np.cross(vect[i],vect[i-1]))/2 #usie cross product to calculate area 
    Time = date[i]-date[i-1] 
    P = np.append(P,(Area_tot/Area)*Time) 

Quand vous faites cela, cependant, je reçois l'erreur suivante:

TypeError: ufunc 'multiply' not supported for the input types, and the inputs could 
not be safely coerced to any supported types according to the casting rule 'safe' 

Alors, je me demande comment je peux multiplier le type de données timedelta64 avec un flotteur ...

Merci à l'avance et être doux, je suis tout à fait nouvelle à la fois stackoverflow et la programmation :)

Répondre

1
Time.tolist().total_seconds() 

obtient la différence en tant que flottant.

+0

Le type de données timedelta64 ne semble pas avoir total_seconds() – Corollary

+0

.tolist() vous donne un objet datetime.timedelta, qui a .total_seconds(). Si vous ne voulez pas utiliser datetime.timedelta, [timedelta64] .astype ('float') vous donne la différence en microsecondes. –

+0

Merci! Je vais essayer celui-là alors. – Corollary

Questions connexes