0

用于掩码数组的 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函数没有问题),这是一个(已知的)错误吗?

4

1 回答 1

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 的问题,但似乎并没有发现这个错误。提出一个新问题可能是个好主意:新问题

于 2012-11-02T13:38:21.580 回答