【问题标题】:Numpy.ma polyfit function for masked arrays crashes on integer input用于掩码数组的 Numpy.ma polyfit 函数在整数输入时崩溃
【发布时间】:2012-11-02 13:07:05
【问题描述】:

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

【问题讨论】:

    标签: numpy curve-fitting polynomial-math maskedinput


    【解决方案1】:

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

    【讨论】:

    • 感谢您的放心,我已经提交了一个新问题。
    • 顺便说一句,我猜你的意思不是import np.finfo(np.float32).eps as eps,而是eps = np.finfo(np.float32).eps ...? :-)
    • 完全一样:这是风格问题:p
    • 这很好奇:import np.finfo(np.float32).eps as eps 给了我一个语法错误...
    • 你是对的:我没有运行这部分代码。我立即修复它。
    猜你喜欢
    • 2015-08-20
    • 1970-01-01
    • 1970-01-01
    • 2012-08-10
    • 2016-08-02
    • 2021-10-18
    • 2017-06-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多