Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/318.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 如何解决输入包含NAN时TAlib给出错误结果的问题_Python_Pandas_Numpy_Nan_Ta Lib - Fatal编程技术网

Python 如何解决输入包含NAN时TAlib给出错误结果的问题

Python 如何解决输入包含NAN时TAlib给出错误结果的问题,python,pandas,numpy,nan,ta-lib,Python,Pandas,Numpy,Nan,Ta Lib,我有一个2-D阵列,其中包含很多NAN。在计算每列的MA时,每列都有一个浮点数,函数给出正确的结果 `np.sum(~np.isnan(talib.MA(b[:,0],5)))` `Out[106]:240` `np.sum(~np.isnan(talib.MA(b[:,1,5)))` `Out[107]:240` 但是,当将2D数组展平为1D数组时,MA函数的输出仅包含240个非nan数据。检查结果后,我发现它丢失了第二列的结果 `np.sum(~np.isnan(talib.MA)(b.f

我有一个2-D阵列,其中包含很多NAN。在计算每列的MA时,每列都有一个浮点数,函数给出正确的结果

`np.sum(~np.isnan(talib.MA(b[:,0],5)))`
`Out[106]:240`
`np.sum(~np.isnan(talib.MA(b[:,1,5)))`
`Out[107]:240`
但是,当将2D数组展平为1D数组时,MA函数的输出仅包含240个非nan数据。检查结果后,我发现它丢失了第二列的结果

`np.sum(~np.isnan(talib.MA)(b.flatten(order='F'),5)))`
`Out[108]:240`
是否有一些解决方案可以解决此问题?此外,talib函数是否支持直接使用2d数组

事实上,我发现talib在计算完NaN之后不会计算值,除了在开始时

例如

f=np.array([nan,1,2,3,4,5,6,nan,nan,3,4,5,6,7])
f2=talib.MA(f,2)
会有这样的结果

f2数组([nan,nan,1.5,2.5,3.5,4.5,5.5,nan,nan,nan,nan,nan,nan,nan,nan])

这个问题有解决方案吗?

TA Lib是一个用C编写的库,您可以通过John Benediktsson制作的python访问它。C库根本不支持2d数组。如果只有C库函数需要类似OHLC的输入,python包装器可以接受这样的数组。在这种情况下,它会将名为“打开”、“高”、“低”、“关闭”等列解释为相应的输入数据。没有任何2d阵列以您期望的方式支持。请参阅包装器的文档和示例

TA Lib不希望在输入中出现任何NAN,您不应该将它们传递给它。使用NAN的任何操作都将导致NAN,并且您将得到不正确的结果


示例输出中的第一个NaN与输入中的NaN没有任何关系。它们是您在MA构造函数中传递的timeperiod=2的结果。移动平均线不能计算每个输入值,它们有一个预热期。C-library在此期间不返回任何内容,只回复能够提供结果的数据索引。因此,在这种情况下,它的结果比输入数组短。Python包装器将NAN插入C-Library reply中,使输出与输入大小相同。

great reply!可惜它不能忽视南的。