You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Currently, the to_numpy() implementation on the datetimelike arrays is quite simple (basically np.array(EA, dtype), which calls __array__ which returns/casts the underlying numpy array). This means that it basically follows numpy's casting rules, while for astype we have a whole bunch of custom conversion rules.
Some examples:
In [1]: arr=pd.date_range("2012-01-01", periods=3).arrayIn [2]: arrOut[2]:
<DatetimeArray>
['2012-01-01 00:00:00', '2012-01-02 00:00:00', '2012-01-03 00:00:00']
Length: 3, dtype: datetime64[ns]
# conversion to string (-> different formatting)In [3]: arr.astype(str)
Out[3]: array(['2012-01-01', '2012-01-02', '2012-01-03'], dtype=object)
In [4]: arr.to_numpy(str)
Out[4]:
array(['2012-01-01T00:00:00.000000000', '2012-01-02T00:00:00.000000000',
'2012-01-03T00:00:00.000000000'], dtype='<U48')
# conversion to float or timedelta (error vs working cast)In [5]: arr.astype(float)
...
TypeError: CannotcastDatetimeArraytodtypefloat64In [6]: arr.to_numpy(float)
Out[6]: array([1.3253760e+18, 1.3254624e+18, 1.3255488e+18])
In [7]: arr.astype('timedelta64[ns]')
...
TypeError: CannotcastDatetimeArraytodtypetimedelta64[ns]
In [8]: arr.to_numpy('timedelta64[ns]')
Out[8]:
array([1325376000000000000, 1325462400000000000, 1325548800000000000],
dtype='timedelta64[ns]')
We might say: to_numpy() is for converting to a numpy array, so in that case it is fine to follow numpy's casting rules. But it would still be good to explicitly decide on this.
On the other hand it's also strange to have two different sets of rules (and the fact that it uses numpy's rules here is somewhat an implementation detail).
The text was updated successfully, but these errors were encountered:
Currently, the
to_numpy()
implementation on the datetimelike arrays is quite simple (basicallynp.array(EA, dtype)
, which calls__array__
which returns/casts the underlying numpy array). This means that it basically follows numpy's casting rules, while forastype
we have a whole bunch of custom conversion rules.Some examples:
We might say:
to_numpy()
is for converting to a numpy array, so in that case it is fine to follow numpy's casting rules. But it would still be good to explicitly decide on this.On the other hand it's also strange to have two different sets of rules (and the fact that it uses numpy's rules here is somewhat an implementation detail).
The text was updated successfully, but these errors were encountered: