Numpy出现TypeError: integer argument expected, got float的分析与解决

问题

今天在使用Numpy的时候,打印array的时候突然出现了TypeError: integer argument expected, got float
这个报错,部分代码如下:

import numpy as np
import pandas as pd

# 设置显示精度
np.set_printoptions(np.inf)

df = pd.read_hdf('db.h5', mode='r', key='600000')
test = df.iloc[4000, 4:5].values
print(test)

分析与解决

真的是让我真是百思不得其解,甚至以为是版本更新导致的问题,后来各种调试和修改,才发现原来问题出在了

np.set_printoptions(np.inf)

这行代码上,np.set_printoptions()这个方法的参数默认并不是threshold,而是precision,其官方文档如下:

numpy.set_printoptions(precision=None, 
					   threshold=None, 
					   edgeitems=None, 
					   linewidth=None, 
					   suppress=None, 
					   nanstr=None, 
					   infstr=None, 
					   formatter=None, 
					   sign=None, 
					   floatmode=None, *, legacy=None)

也就是默认将数值精度都设置为了无限大(为float64类型),所以在iloc进行索引的时候,就出现了需要整型而输入为float的类型错误了.

P.S. 自己还是太菜…还得多学习.

上一篇:pytorch中报错 TypeError: unsupported operand type(s) for %: 'Tensor' and 'int'


下一篇:新增妹子动画