【问题标题】:How to Convert a List to numpy.datetime64 format如何将列表转换为 numpy.datetime64 格式
【发布时间】:2020-08-25 09:18:48
【问题描述】:

我知道我们可以将单个字符串创建为np.datetime64 格式,例如:

a = np.datetime64('2020-01-01')

但是如果我们有一个包含多个日期字符串的列表呢?

我们如何能够应用相同的np.datetime64 将其中的所有元素转换为日期时间格式?除了做一个for循环之外。

【问题讨论】:

标签: python numpy datetime64


【解决方案1】:

当你有你的字符串列表时,将它用作 Numpy 数组的源, 将 datetime64 作为 dtype 传递。例如:

lst = ['2020-01-01', '2020-02-05', '2020-03-07' ]
a = np.array(lst, dtype='datetime64')

当你执行a时(实际上是把这个数组打印在笔记本上), 你会得到:

array(['2020-01-01', '2020-02-05', '2020-03-07'], dtype='datetime64[D]')

如您所见,在这种情况下,默认精度为 Day。 但是您可以明确地传递精度,例如b = np.array(lst, dtype='datetime64[s]').

不要被上面每个元素周围的撇号误导 打印输出,它们是不是字符串。要检查它,请执行a[0] 和 你会得到:

numpy.datetime64('2020-01-01')

【讨论】:

  • 嗯我不太清楚你的精度是什么意思,我运行代码 a = np.array(lst, dtype='datetime64') 并打印出每个元素 type() 和它确实给了我 datetime64。
  • 日期精度可以是例如“日”,但仅在 Numpy 中。 Pandas 使用 ms(毫秒)精度。
  • 在 Numpy 中的含义我无法打印秒数?天是最精确的维度?
  • 每个字符串的格式如何:'YYYY-MM-DD'这就是我所知道的,呵呵
  • 创建 datetime 类型的 Numpy 数组,但精度不同,然后打印值。例如。对于 Day 精度,您只能在不同日期的 0:00 时获得值。
【解决方案2】:

使用列表推导:

strings_list= [...]
npdate_list = [np.datetime64(x) for x in strings_list]

您是否有特定原因要避免循环?

列表理解还可以吗?

【讨论】:

  • OP 正在寻找没有循环的解决方案。
  • 是的,我读到了。等着看他为什么要避免循环,看看我们能提供什么帮助。
  • 因为我不是一个经验丰富的程序员,所以我对它很陌生,因为我需要作为辅助课程学习,所以 Python 是我唯一知道的语言,所以我尽量避免循环,因为我们可以轻松地将单个字符串转换为 np.datetime64 但是当我们有一个列表时,它就不同了。也许你可以给我看一个简化的for循环:)?谢谢哥们!
  • 我的第一个答案是循环!它被称为列表理解,它从“内部”for循环创建一个列表。但你是对的,如果你是新手,那将在以后出现。对于简单的 for 循环: lst = ['2020-01-01', '2020-02-05', '2020-03-07' ] date_list = [] for element in lst: date_list.append(np.datetime64(元素))
猜你喜欢
  • 1970-01-01
  • 2012-10-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-03
  • 1970-01-01
相关资源
最近更新 更多