问题
今天在使用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. 自己还是太菜…还得多学习.