掩码数组的{numpy多项式拟合函数ma.polyfit
在整数输入时崩溃:
import numpy.ma as ma
x = ma.arange(2)
y = ma.arange(2)
p1 = ma.polyfit(np.float32(x), y, deg=1)
p2 = ma.polyfit( x , y, deg=1)
最后一行导致错误:
ValueError: data type <type 'numpy.int64'> not inexact
为什么我不能用整数x值拟合数据(普通numpy.polyfit
函数没问题),这是一个(已知的)错误吗?
答案 0 :(得分:3)
确实来自numpy.ma
的错误:rcond
(排除某些值的参数)将len(x)*np.finfo(x.dtypes).eps
作为默认值,np.int32
没有任何错误eps
字段(因为int没有相对精度)。
import numpy.ma as ma
eps = np.finfo(np.float32).eps
x = ma.arange(2)
y = ma.arange(2)
p1 = ma.polyfit(np.float32(x), y, deg=1, rcond = len(x)*eps)
p2 = ma.polyfit( x , y, deg=1, rcond = len(x)*eps)
我很快就看到了numpy的问题,而且这个bug似乎没有在那里找到。提出新问题可能是个好主意:New Issue