def test_datetime_to_numeric_potential_overflow(): import cftime times = pd.date_range("2000", periods=5, freq="7D").values.astype("datetime64[us]") cftimes = cftime_range("2000", periods=5, freq="7D", calendar="proleptic_gregorian").values offset = np.datetime64("0001-01-01") cfoffset = cftime.DatetimeProlepticGregorian(1, 1, 1) result = duck_array_ops.datetime_to_numeric(times, offset=offset, datetime_unit="D", dtype=int) cfresult = duck_array_ops.datetime_to_numeric(cftimes, offset=cfoffset, datetime_unit="D", dtype=int) expected = 730119 + np.arange(0, 35, 7) np.testing.assert_array_equal(result, expected) np.testing.assert_array_equal(cfresult, expected)
def test_datetime_to_numeric_cftime(dask): if dask and not has_dask: pytest.skip("requires dask") times = cftime_range("2000", periods=5, freq="7D", calendar="standard").values if dask: import dask.array times = dask.array.from_array(times, chunks=-1) with raise_if_dask_computes(): result = duck_array_ops.datetime_to_numeric(times, datetime_unit="h", dtype=int) expected = 24 * np.arange(0, 35, 7) np.testing.assert_array_equal(result, expected) offset = times[1] with raise_if_dask_computes(): result = duck_array_ops.datetime_to_numeric(times, offset=offset, datetime_unit="h", dtype=int) expected = 24 * np.arange(-7, 28, 7) np.testing.assert_array_equal(result, expected) dtype = np.float32 with raise_if_dask_computes(): result = duck_array_ops.datetime_to_numeric(times, datetime_unit="h", dtype=dtype) expected = 24 * np.arange(0, 35, 7).astype(dtype) np.testing.assert_array_equal(result, expected)
def test_datetime_to_numeric_datetime64(): times = pd.date_range("2000", periods=5, freq="7D").values result = duck_array_ops.datetime_to_numeric(times, datetime_unit="h") expected = 24 * np.arange(0, 35, 7) np.testing.assert_array_equal(result, expected) offset = times[1] result = duck_array_ops.datetime_to_numeric(times, offset=offset, datetime_unit="h") expected = 24 * np.arange(-7, 28, 7) np.testing.assert_array_equal(result, expected) dtype = np.float32 result = duck_array_ops.datetime_to_numeric(times, datetime_unit="h", dtype=dtype) expected = 24 * np.arange(0, 35, 7).astype(dtype) np.testing.assert_array_equal(result, expected)
def test_datetime_to_numeric_cftime(): times = cftime_range('2000', periods=5, freq='7D').values result = duck_array_ops.datetime_to_numeric(times, datetime_unit='h') expected = 24 * np.arange(0, 35, 7) np.testing.assert_array_equal(result, expected) offset = times[1] result = duck_array_ops.datetime_to_numeric( times, offset=offset, datetime_unit='h') expected = 24 * np.arange(-7, 28, 7) np.testing.assert_array_equal(result, expected) dtype = np.float32 result = duck_array_ops.datetime_to_numeric( times, datetime_unit='h', dtype=dtype) expected = 24 * np.arange(0, 35, 7).astype(dtype) np.testing.assert_array_equal(result, expected)
def test_datetime_to_numeric_cftime(): times = cftime_range('2000', periods=5, freq='7D').values result = duck_array_ops.datetime_to_numeric(times, datetime_unit='h') expected = 24 * np.arange(0, 35, 7) np.testing.assert_array_equal(result, expected) offset = times[1] result = duck_array_ops.datetime_to_numeric( times, offset=offset, datetime_unit='h') expected = 24 * np.arange(-7, 28, 7) np.testing.assert_array_equal(result, expected) dtype = np.float32 result = duck_array_ops.datetime_to_numeric( times, datetime_unit='h', dtype=dtype) expected = 24 * np.arange(0, 35, 7).astype(dtype) np.testing.assert_array_equal(result, expected)