python数据转换的一个问题,关于isfinite( )函数的输入参数

曰叛臣反是也 发布于 2015/10/23 14:58
阅读 4K+
收藏 0

【DevOps必读】产品经理与程序员之间如何破局?>>>

Eclipse 上运行的python2.7 控制台,从数据库里读出数据并调用函数处理

1
2
3
4
5
6
7
8
9
10
11
cursor.execute(sqlorder)
val=np.array(cursor.fetchall())

h,w=np.size(val, axis=0),np.size(val, axis=1)
#val1=np.zeros((h,w))       
for i in np.arange(0,h):
    for j in np.arange(0,w):
        #val[i][j]=np.float64(val[i][j])
        val[i][j]=np.float64(val[i][j])  

isfinite(val)

val是从数据库里读出的矩阵,元素类型是Decimal,如下
强制转换为float64之后调用isfinite()来判断是否有无穷大数,
转换后val=
在当前位置上转换后,调用isfinite()出现如下错误:
TypeError: ufunc 'isfinite' not supported for the input types, and the inputs could not be safely coerced to any supported types according to the casting rule ''safe''
显示不支持该数据类型

重新开辟空间转换,
1
2
3
4
5
6
7
8
9
10
11
12
13
cursor.execute(sqlorder)
val=np.array(cursor.fetchall())

h,w=np.size(val, axis=0),np.size(val, axis=1)
val1=np.zeros((h,w))       
for i in np.arange(0,h):
    for j in np.arange(0,w):
        val1[i][j]=np.float64(val[i][j])
        #val[i][j]=np.float64(val[i][j])  

isfinite(val1)

结果如下:val1=

val1调用isfinite可以成功

val 和val1的类型以及子元素的类型如下

除了转换精度和位置实在看不出区别,怀疑有底层机制制约,但是没有查到相应资料

加载中
返回顶部
顶部