Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 查找datetime64的星期几_Python_Numpy_Datetime - Fatal编程技术网

Python 查找datetime64的星期几

Python 查找datetime64的星期几,python,numpy,datetime,Python,Numpy,Datetime,抱歉,如果这是一个简单的问题,但我在numpy文档中看不到任何内容。我有一个datetime64,我想知道这是一周中的哪一天 与python不同,datetime,datetime64似乎没有.weekday()函数。但是,它确实有一个busday\u offset()函数,这意味着它必须在幕后知道给定日期是一周中的哪一天。非常感谢您的帮助。请查看以下相关问题: 我知道您的数据是一个numpy数组,通过pandas将数据转换为数据帧格式可能会很有用。如下所示 import pandas as

抱歉,如果这是一个简单的问题,但我在
numpy
文档中看不到任何内容。我有一个
datetime64
,我想知道这是一周中的哪一天


与python不同,
datetime
datetime64
似乎没有
.weekday()
函数。但是,它确实有一个
busday\u offset()
函数,这意味着它必须在幕后知道给定日期是一周中的哪一天。非常感谢您的帮助。

请查看以下相关问题:

我知道您的数据是一个numpy数组,通过pandas将数据转换为数据帧格式可能会很有用。如下所示

import pandas as pd
df = pd.DataFrame(numpyArray)
如果您的数据现在位于数据框中,那么下面的代码(取自上面的链接)应该为您提供您所关注的工作日

df['weekday'] = df['Timestamp'].dt.dayofweek

此外,此参考资料也可能对您有所帮助


我想你可以这样做:

import numpy as np
import datetime
t = '2018-09-19'
t = np.datetime64(t)
day = t.astype(datetime.datetime).isoweekday()
print day
输出:

3

如果您正在寻找一种真正的矢量化numpy方法,您可以:

def day_of_week_num(dts):
    return (dts.astype('datetime64[D]').view('int64') - 4) % 7
它有点老套,只是利用了
numpy.datetime64
s与unix时代(周四)相对的事实


(我不知道这是否是一个可以在不通知的情况下更改的实现细节,但您始终可以使用
assert np.zero(1).astype('datetime64[D]')==np.datetime64('1970-01-01','D')

@roganjosh进行检查-不用担心。我只是这么想,所以我开始编辑我的答案。谢谢你的提醒!谢谢-这确实有效,但我在一个循环中使用它(平均)运行10万次-所以我尽量避免踏入熊猫乐园。@Chrisper-不用担心。如果我知道这一点,我建议您可以实现一个lambda函数,它可以使这个函数即使与pandas一起运行也同样快。谢谢我想这将是最好的——尽管numpy中不存在该功能似乎有些奇怪。@Chrisper你是对的,这很奇怪,但所谓的“OO”语言的一个特点是它们没有充分处理多态性和类型推断。当你开始处理“数据争用”以使各种“形状”正确变形等问题时,情况会变得更糟。这必须占用程序员的大部分时间。顺便说一句,这个答案不起作用
numpy.datetime64('2020-10-27T22:29:00.000000000')。astype(datetime.datetime)。\uuu class\uuuuu
@user3673-我非常同意-这些天我大部分的代码都是用Scala编写的。谢谢-实际上效果非常好。对于一年的日期,它的运行速度大约是check.isoweekday()的10倍。您可以通过已知日期计算移位,而不用使用断言。也就是说,使用
(np.datetime64('2020-01-06','D')-np.datetime64('2020-01-06','W')).astype(int)代替
4
。2020年1月6日是星期一。当然,这将计算为
4
,除非
numpy
改变其行为。