Если вы ищете по-настоящему векторизованный подход numpy, вы можете сделать:
def day_of_week_num(dts):
return (dts.astype('datetime64[D]').view('int64') - 4) % 7
Это немного глупо и просто использует тот факт, что numpy.datetime64
s относятся к unixэпоха, которая была четвергом.
(я не знаю, может ли эта деталь реализации измениться без уведомления, но вы всегда можете проверить с помощью assert np.zeros(1).astype('datetime64[D]') == np.datetime64('1970-01-01', 'D')
.)