Python报错”TypeError: ‘numpy.datetime64’ object is not callable “怎么处理?

  • Post category:Python

问题描述:当使用Python中的numpy库进行日期操作时,可能会报错”TypeError: ‘numpy.datetime64’ object is not callable”,这个报错的原因是什么?如何解决?

原因分析:numpy库中datetime64对象表示日期时间类型数据,可以进行日期时间的加减运算。当一个numpy.datetime64对象被当作函数调用时,会出现以上错误。

常见的numpy.datetime64被当作函数调用的情况有:

  1. 在进行时间间隔计算时,使用()而不是[]
  2. 在操作时间序列的时候,使用了()而不是[]

解决方法:

方法一:检查代码错误,使用[]而不是()

如下面的代码,使用[]而不是(),即可避免报错。

import numpy as np

#创建时间范围
date_range = np.arange('2022-08-01', '2022-08-10', dtype=np.datetime64)
#打印时间序列
print(date_range)

输出结果:

['2022-08-01' '2022-08-02' '2022-08-03' '2022-08-04' '2022-08-05'
 '2022-08-06' '2022-08-07' '2022-08-08' '2022-08-09']

方法二:避免使用和numpy.datetime64方法同名的变量

在一些代码中,可能会使用和numpy.datetime64同名的变量名,这会导致numpy.datetime64被覆盖而无法使用。因此,避免采用和numpy.datetime64相同的变量名,可以避免报错。

方法三:使用()来调用datetime64对象

当numpy.datetime64对象被当作函数进行调用时,可以使用括号()来调用来创建numpy.datetime64对象。如下面的代码:

import numpy as np

#创建时间范围
date_range = np.arange(np.datetime64("2022-08-01"), np.datetime64("2022-08-10"))
#打印时间序列
print(date_range)

输出结果:

['2022-08-01' '2022-08-02' '2022-08-03' '2022-08-04' '2022-08-05'
 '2022-08-06' '2022-08-07' '2022-08-08' '2022-08-09']

可以看到,使用括号()来调用可以解决这个问题。

综上所述,以上三种方法都可以解决”TypeError: ‘numpy.datetime64’ object is not callable”报错问题。选择哪一种方法主要看个人编程习惯和代码逻辑。