TA Lib numpy“断言错误:real不是double”

2024-03-28 09:16:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我在python中使用了TA Lib包装器。你能看看我的密码吗?我真的很感谢你的帮助。

import numpy as np
import talib

#This works
test_data = np.random.random(5)
np_out = talib.SMA(test_data,3)
print np_out

#How come this does not work?  I need to fix
real_data = [135.01, 133.0, 134.0, 131.0, 133.0, 131.0]
np_real_data = np.array(real_data,dtype=np.object)
np_out = talib.SMA(np_real_data,3)
print np_out

错误消息:

  File "func.pyx", line 9200, in talib.func.SMA (talib/func.c:85610)
AssertionError: real is not double

我怀疑解决办法可能是将double转换为real。我想验证一下这个想法。如何将真实的数据从double转换为real?

谢谢。


Tags: testimportdatalibnpnotrandomout
2条回答

I suspect the solution might be to convert double to real.

不,你有真实的数据。TA lib不喜欢“真实数据”。要将其转换为双浮点数据。

回复:质量控制委员会无法解释的答案:

f8是一个64位的“双精度”浮点数。 http://docs.scipy.org/doc/numpy/reference/arrays.dtypes.html

TA lib需要“double”浮点的numpy数组作为输入。

http://en.wikipedia.org/wiki/Double-precision_floating-point_format

有几种方法可以用来获得你要去的地方,可能对你来说最好的方法是:

    real_data = [135.01, 133.0, 134.0, 131.0, 133.0, 131.0]
    float_data = [float(x) for x in real_data]
    np_float_data = np.array(float_data)
    np_out = talib.SMA(np_float_data,3)

下面是其他几个:

(一)

    real_data = [float(x) for x in [135.01, 133.0, 134.0, 131.0, 133.0, 131.0]]
    np_real_data = np.array(real_data)
    np_out = talib.SMA(np_real_data,3)

2个)

    real_data = [135.01, 133.0, 134.0, 131.0, 133.0, 131.0]
    np_real_data = np.array(real_data, dtype='f8')
    np_out = talib.SMA(np_real_data,3)

三)

    real_data = [135.01, 133.0, 134.0, 131.0, 133.0, 131.0]
    np_real_data = np.array(real_data, dtype=float)
    np_out = talib.SMA(np_real_data,3)

(四)

    real_data = map(float, [135.01, 133.0, 134.0, 131.0, 133.0, 131.0])
    np_real_data = np.array(real_data)
    np_out = talib.SMA(np_real_data,3)

五)

    real_data = [float(135.01), float(133.0), float(134.0), float(131.0), 
                 float(133.0), float(131.0)]
    np_real_data = np.array(real_data)
    np_out = talib.SMA(np_real_data,3)

试试这个

np_real_data = np.array(real_data,dtype='f8')

相关问题 更多 >