【问题标题】:TypeError: 'numpy.float64' object cannot be interpreted as an integerTypeError:“numpy.float64”对象不能解释为整数
【发布时间】:2017-09-20 03:49:20
【问题描述】:

我正在尝试从 pyculiarity 包中运行 detect_ts 函数,但在 python 中传递二维数据帧时出现此错误。

>>> import pandas as pd
>>> from pyculiarity import detect_ts
>>> data=pd.read_csv('C:\\Users\\nikhil.chauhan\\Desktop\\Bosch_Frame\\dataset1.csv',usecols=['time','value'])
>>> data.head()
   time  value
0     0   32.0
1   250   40.5
2   500   40.5
3   750   34.5
4  1000   34.5
>>> results = detect_ts(data,max_anoms=0.05,alpha=0.001,direction = 'both')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Windows\System32\pyculiar-0.0.5\pyculiarity\detect_ts.py", line 177, in detect_ts
    verbose=verbose)
  File "C:\Windows\System32\pyculiar-0.0.5\pyculiarity\detect_anoms.py", line 69, in detect_anoms
    decomp = stl(data.value, np=num_obs_per_period)
  File "C:\Windows\System32\pyculiar-0.0.5\pyculiarity\stl.py", line 35, in stl
    res = sm.tsa.seasonal_decompose(data.values, model='additive', freq=np)
  File "C:\Anaconda3\lib\site-packages\statsmodels\tsa\seasonal.py", line 88, in seasonal_decompose
    trend = convolution_filter(x, filt)
  File "C:\Anaconda3\lib\site-packages\statsmodels\tsa\filters\filtertools.py", line 303, in convolution_filter
    result = _pad_nans(result, trim_head, trim_tail)
  File "C:\Anaconda3\lib\site-packages\statsmodels\tsa\filters\filtertools.py", line 28, in _pad_nans
    return np.r_[[np.nan] * head, x, [np.nan] * tail]
TypeError: 'numpy.float64' object cannot be interpreted as an integer

【问题讨论】:

  • 我会查看 detect_ts 的文档。确保输入是正确的类型。 data.valuesdata 中提取一个数组。另一种方法是从头开始工作,推断出headxtail 是什么。 [np.nan]*np.float64(2) 产生您的错误。
  • 同样的错误发生在我身上...当我启用文件夹路径来访问数据时。 (例如:G文件夹/共享链接)错误得到纠正,因为访问数据的链接被激活。

标签: python-3.x numpy


【解决方案1】:

您的代码的问题可能是 np.nanfloat64 类型值,但 np.r_[] 期望逗号分隔 整数 在其方括号内。 因此,您需要先将它们转换为 integer 类型。

但是我们这里还有另一个问题。

return np.r_[[(int)(np.nan)] * head, x, [(int)(np.nan)] * tail]

这应该可以解决一般情况下的问题.... 但在这种情况下它不起作用,因为 NaN 不能被强制转换为整数类型。

ValueError: cannot convert float NaN to integer

因此,除非我们知道您在此处尝试做什么,否则无法提出合适的解决方案。尝试提供有关您的代码的更多详细信息,您一定会得到我们的帮助。

:-)

【讨论】:

    猜你喜欢
    • 2021-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-15
    • 1970-01-01
    • 1970-01-01
    • 2020-06-03
    • 1970-01-01
    相关资源
    最近更新 更多