[Numpy-discussion] Computing least squares fit with masked array

Thomas Goebel Thomas.Goebel at th-nuernberg.de
Mon Jun 24 07:40:08 EDT 2013


Hi list,

i want to calculate the least squares fit of some data with
missing values. So i masked all values using numpys masked array
module.

Unfortunately using linalg.lstsq i only get nan data back. Can
somebody help me solve this problem?

The output of np.linalg.lstsq ist:
(masked_array(data = [ nan  nan  nan  nan],
             mask = False,
       fill_value = 1e+20)
, masked_array(data = [ nan],
             mask = False,
       fill_value = 1e+20)
, 4, array([  2.08406074e+03,   1.73066556e+01,   1.32393450e+01,
         1.09943429e-01]))

Thanks for your help,
Tom

The python code i use is:

#!/usr/bin/env python2
# -*- coding: utf-8 -*-

import numpy as np

x = np.array([-30, -25, -20])
y = np.array([25, 20, 35])

z = np.array([
    [1285, 1613, 2190],
    [np.nan, 1283, 1897],
    [np.nan, np.nan, 1619]
    ])

N, M = len(x), len(y)

x_new = np.hstack([x] * N)
y_new = np.repeat(y, M)

z_new = np.repeat(z, 1)
z_new = np.ma.masked_array(z_new, np.isnan(z_new))

A = np.array([x_new, y_new, x_new*y_new, np.ones(N*M)])

out = np.linalg.lstsq(A.T, z_new)

print out



More information about the NumPy-Discussion mailing list