TypeError: cannot perform reduce with flexible type 解决方案

for i in all_data[600000]:
			close_price_list.append(i['close'])
		for j in range(len(close_price_list)):
			if 2*N+j > len(close_price_list):  # 通过验证,索引正确
				continue
			else:
				temp_sigma = np.std(close_price_list[N+j:2*N+j])  # 通过验证,索引正确
				sigma_list.append(temp_sigma)
		print(sigma_list)

这段代码,解释一下,报错的是标黄的这一行。

我是用for循环获取的变量j是一个列表类型,里面是一串价格。我想获取这个列表价格的标准差np.std()

但是总报错:

  File "versions2.py", line 155, in Creat_std
    temp_sigma = np.std(close_price_list[N+j:2*N+j])  # 通过验证,索引正确
  File "C:\Users\Administrator\AppData\Local\Programs\Python\Python36\lib\site-packages\numpy\core\fromn
 3075, in std
    **kwargs)
  File "C:\Users\Administrator\AppData\Local\Programs\Python\Python36\lib\site-packages\numpy\core\_meth
5, in _std
    keepdims=keepdims)
  File "C:\Users\Administrator\AppData\Local\Programs\Python\Python36\lib\site-packages\numpy\core\_meth
2, in _var
    arrmean = umr_sum(arr, axis, dtype, keepdims=True)
TypeError: cannot perform reduce with flexible type

解决方案:

在确认了一切数据正确,list类型也没错的情况下。

我发现,是列表中的元素,并不是数值型,而是string字符串类型,这导致了np.std()函数的报错。

close_price_list.append(i['close'])

修改为:

close_price_list.append(float(i['close']))

即可解决


猜你喜欢

转载自blog.csdn.net/qq_18999357/article/details/80865982
今日推荐