2012-11-02 87 views
0

用於掩蔽的陣列,ma.polyfit的numpy的多項式擬合函數掩蔽陣列崩潰Numpy.ma polyfit功能,崩潰整數iput:對整數輸入

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函數沒有問題)來匹配數據,這是一個(已知的)錯誤嗎?

回答

2

這確實是從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

+0

感謝您的放心,我提交了一個新問題。 –

+0

順便說一句,而不是'import np.finfo(np.float32).eps as eps',我想你的意思是'eps = np.finfo(np.float32).eps' ...? :-) –

+0

它是一樣的:這是一個風格問題:p – lucasg