Usando o OS X 10.12 e usando a versão: 1.15.0rc2 de numpy. Estou vendo este erro:
File "temp.py", line 103, in computeMACD
emaslow = ExpMovingAverage(x, slow)
File "temp.py", line 93, in ExpMovingAverage
a = np.convolve(values, weights, mode='full')[:len(values)]
File "/Users/x/xx/graph/lib/python3.6/site-packages/numpy/core/numeric.py", line 1045, in convolve
return multiarray.correlate(a, v[::-1], mode)
TypeError: Cannot cast array data from dtype('float64') to dtype('<U32') according to the rule 'safe'
Estou vendo este erro ao usar este código amplamente disponível:
def ExpMovingAverage(values, window):
weights = np.exp(np.linspace(-1., 0., window))
weights /= weights.sum()
a = np.convolve(values, weights, mode='full')[:len(values)]
a[:window] = a[window]
return a
Meus valores são preços de ações reais, ['93 .89 ', '89 .89', '87 .17 ', '90 .57', '88 .92 ', '90 .46' ...]. A janela é 26. Não tenho certeza por que tantas pessoas fazem referência ao código acima que não está funcionando para mim. Alguma ideia do que está errado aqui?
Seus dados são strings. Eles deveriam ser números.
['93.89', '89.89', '87.17', '90.57', '88.92', '90.46'...]
deveria estar
[93.89, 89.89, 87.17, 90.57, 88.92, 90.46]
Isso é verificado usando
v = ['93.89', '89.89', '87.17', '90.57', '88.92', '90.46']*30
ExpMovingAverage(v,10)
TypeError: Cannot cast array data from dtype('float64') to
dtype('<U32') according to the rule 'safe'
e
ExpMovingAverage(list(map(float,v)),10)
array([89.6938941 , 89.6938941 , 89.6938941 , 89.6938941 ...
Obrigada. Isso resolveu meu problema
Comentários muito úteis
Seus dados são strings. Eles deveriam ser números.
deveria estar
Isso é verificado usando
e