2014-12-07 14 views
5

io non riesco a ottenere numpy.digitize a lavorare con datetime64:NumPy digitalizzare con datetime64

date_bins = np.array([np.datetime64(datetime.datetime(2014, n, 1), 's') for n in range(1,13)]) 
np.digitize(date_bins, date_bins) 

Si dà il seguente errore:

TypeError: Cannot cast array data from dtype('<M8[s]') to dtype('float64') according to the rule 'safe' 

È questo comportamento previsto?

risposta

4

ottenere una vista i8 di datetime valori:

>>> date_bins_i8 = date_bins.view('i8') 
>>> np.digitize(date_bins_i8, date_bins_i8) 
array([ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]) 

i8 è 64 bit tipo di dati intero e view costruisce una vista della memoria della matrice.