首页 > 解决方案 > Python - 输入数组的尺寸错误

问题描述

在编码方面,我是一个绝对的初学者,最近我发现了 talib。我一直在尝试计算 RSI,但遇到了错误。我一直在寻找互联网上的解决方案,就像我通常做的那样,但没有成功。我猜我的数据对于 talib.RSI 函数有错误的数据类型,但这就是我的知识范围。

如果有人能想出一个解决方案并对其进行一些扩展,那就太好了,这样我就可以在此过程中学到一些东西:-)

提前谢谢了,

马蒂

import pandas as pd
import talib
import numpy as np

data = pd.read_excel (r'name.xlsx')
df = pd.DataFrame(data, columns = ['close'])

RSI_PERIOD = 14

close_prices = pd.DataFrame(df, columns = ['close'])
np_close_prices = np.array(close_prices)
print(np_close_prices)

rsi = talib.RSI(np_close_prices, RSI_PERIOD)
print(rsi)

-------------------------------------------------- ------------------------- 12 print(np_close_prices) 13 ---> 14 rsi = talib.RSI 中的异常回溯(最近一次通话最后一次) (np_close_prices, RSI_PERIOD) 15 打印 (rsi)

~\anaconda3\lib\site-packages\talib_ init _.py in wrapper(*args, **kwargs) 25 26 if index is None: ---> 27 return func(*args, **kwargs) 28 29 #如果是 pandas,则使用 Series 的 float64 值,否则使用传递的值

talib._ta_lib.RSI() 中的 talib_func.pxi

talib._ta_lib.check_array() 中的 talib_func.pxi

例外:输入数组的尺寸错误

标签: pythonarraysnumpydimensions

解决方案


@kcw78 感谢您的回复。在看到您的回复并设法找到答案之前,我又上网查找了一些。我不知道 lambda 是什么或它做了什么,但希望有一天我会发现并理解这是如何解决问题的:)

import pandas as pd
import talib
import numpy as np

RSI_PERIOD = 14

data = pd.read_excel (r'name.xlsx')
df = pd.DataFrame(data, columns = ['close'])
rsi = df.apply(lambda x: talib.RSI(x, RSI_PERIOD))
rsi.columns = ['RSI']
print(rsi)

推荐阅读