On 08/18/2011 04:43 PM, Mark Wiebe wrote:
It's taken a lot of changes to get the NA mask support to its current
point, but the code ready for some testing now. You can read the
work-in-progress release notes here:
https://github.com/m-paradox/numpy/blob/missingdata/doc/release/2.0.0-notes.rst
To try it out, check out the missingdata branch from my github
account, here, and build in the standard way:
https://github.com/m-paradox/numpy
The things most important to test are:
* Confirm that existing code still works correctly. I've tested
against SciPy and matplotlib.
* Confirm that the performance of code not using NA masks is the same
or better.
* Try to do computations with the NA values, find places they don't
work yet, and nominate unimplemented functionality important to you to
be next on the development list. The release notes have a preliminary
list of implemented/unimplemented functions.
* Report any crashes, build problems, or unexpected behaviors.
In addition to adding the NA mask, I've also added features and done a
few performance changes here and there, like letting reductions like
sum take lists of axes instead of being a single axis or all of them.
These changes affect various bugs like
http://projects.scipy.org/numpy/ticket/1143 and
http://projects.scipy.org/numpy/ticket/533.
Thanks!
Mark
Here's a small example run using NAs:
>>> import numpy as np
>>> np.__version__
'2.0.0.dev-8a5e2a1'
>>> a = np.random.rand(3,3,3)
>>> a.flags.maskna = True
>>> a[np.random.rand(3,3,3) < 0.5] = np.NA
>>> a
array([[[NA, NA, 0.11511708],
[ 0.46661454, 0.47565512, NA],
[NA, NA, NA]],
[[NA, 0.57860351, NA],
[NA, NA, 0.72012669],
[ 0.36582123, NA, 0.76289794]],
[[ 0.65322748, 0.92794386, NA],
[ 0.53745165, 0.97520989, 0.17515083],
[ 0.71219688, 0.5184328 , 0.75802805]]])
>>> np.mean(a, axis=-1)
array([[NA, NA, NA],
[NA, NA, NA],
[NA, 0.56260412, 0.66288591]])
>>> np.std(a, axis=-1)
array([[NA, NA, NA],
[NA, NA, NA],
[NA, 0.32710662, 0.10384331]])
>>> np.mean(a, axis=-1, skipna=True)
/home/mwiebe/installtest/lib64/python2.7/site-packages/numpy/core/fromnumeric.py:2474:
RuntimeWarning: invalid value encountered in true_divide
um.true_divide(ret, rcount, out=ret, casting='unsafe')
array([[ 0.11511708, 0.47113483, nan],
[ 0.57860351, 0.72012669, 0.56435958],
[ 0.79058567, 0.56260412, 0.66288591]])
>>> np.std(a, axis=-1, skipna=True)
/home/mwiebe/installtest/lib64/python2.7/site-packages/numpy/core/fromnumeric.py:2707:
RuntimeWarning: invalid value encountered in true_divide
um.true_divide(arrmean, rcount, out=arrmean, casting='unsafe')
/home/mwiebe/installtest/lib64/python2.7/site-packages/numpy/core/fromnumeric.py:2730:
RuntimeWarning: invalid value encountered in true_divide
um.true_divide(ret, rcount, out=ret, casting='unsafe')
array([[ 0. , 0.00452029, nan],
[ 0. , 0. , 0.19853835],
[ 0.13735819, 0.32710662, 0.10384331]])
>>> np.std(a, axis=(1,2), skipna=True)
array([ 0.16786895, 0.15498008, 0.23811937])
_______________________________________________
NumPy-Discussion mailing list
NumPy-Discussion@scipy.org
http://mail.scipy.org/mailman/listinfo/numpy-discussion
Hi,
I had to rebuild my Python2.6 as a 'normal' version.
Anyhow, Python2.4, 2.5, 2.6 and 2.7 all build and pass the numpy tests.
Curiously, only tests in Python2.7 give almost no warnings but all the
other Python2.x give lots of warnings - Python2.6 and Python2.7 are
below. My expectation is that all versions should behave the same
regarding printing messages.
Also the message 'Need pytz library to test datetime timezones' means
that there are invalid tests that have to be rewritten (ticket 1939:
http://projects.scipy.org/numpy/ticket/1939 ).
Bruce
$ python2.6 -c "import numpy; numpy.test()"
Running unit tests for numpy
NumPy version 2.0.0.dev-93236a2
NumPy is installed in /usr/local/lib/python2.6/site-packages/numpy
Python version 2.6.6 (r266:84292, Aug 19 2011, 09:21:38) [GCC 4.5.1
20100924 (Red Hat 4.5.1-4)]
nose version 1.0.0
......................../usr/local/lib/python2.6/site-packages/numpy/core/tests/test_datetime.py:1313:
UserWarning: Need pytz library to test datetime timezones
warnings.warn("Need pytz library to test datetime timezones")
.........................................................................................................................../usr/local/lib/python2.6/unittest.py:336:
DeprecationWarning: DType strings 'O4' and 'O8' are deprecated because
they are platform specific. Use 'O' instead
callableObj(*args, **kwargs)
............................................................................................................................................................................................................./usr/local/lib/python2.6/site-packages/numpy/core/_internal.py:555:
DeprecationWarning: Setting NumPy dtype names is deprecated, the dtype
will become immutable in a future version
value.names = tuple(names)
...../usr/local/lib/python2.6/site-packages/numpy/core/tests/test_multiarray.py:1912:
DeprecationWarning: Setting NumPy dtype names is deprecated, the dtype
will become immutable in a future version
dt.names = tuple(names)
...../usr/local/lib/python2.6/site-packages/numpy/core/tests/test_multiarray.py:804:
DeprecationWarning: DType strings 'O4' and 'O8' are deprecated because
they are platform specific. Use 'O' instead
return loads(obj)
..../usr/local/lib/python2.6/site-packages/numpy/core/tests/test_multiarray.py:1046:
DeprecationWarning: putmask has been deprecated. Use copyto with 'where'
as the mask instead
np.putmask(x,[True,False,True],-1)
../usr/local/lib/python2.6/site-packages/numpy/core/tests/test_multiarray.py:1025:
DeprecationWarning: putmask has been deprecated. Use copyto with 'where'
as the mask instead
np.putmask(x, mask, val)
................................................/usr/local/lib/python2.6/unittest.py:336:
DeprecationWarning: putmask has been deprecated. Use copyto with 'where'
as the mask instead
callableObj(*args, **kwargs)
../usr/local/lib/python2.6/site-packages/numpy/core/tests/test_multiarray.py:1057:
DeprecationWarning: putmask has been deprecated. Use copyto with 'where'
as the mask instead
np.putmask(rec['x'],[True,False],10)
/usr/local/lib/python2.6/site-packages/numpy/core/tests/test_multiarray.py:1061:
DeprecationWarning: putmask has been deprecated. Use copyto with 'where'
as the mask instead
np.putmask(rec['y'],[True,False],11)
.S/usr/local/lib/python2.6/site-packages/numpy/core/tests/test_multiarray.py:1395:
DeprecationWarning: Setting NumPy dtype names is deprecated, the dtype
will become immutable in a future version
dt.names = ['p','q']
..................................................................................................................................................................................................................................................................................................................................................................................../usr/local/lib/python2.6/site-packages/numpy/core/records.py:157:
DeprecationWarning: DType strings 'O4' and 'O8' are deprecated because
they are platform specific. Use 'O' instead
dtype = sb.dtype(formats, aligned)
........................................................./usr/local/lib/python2.6/site-packages/numpy/core/tests/test_regression.py:1426:
DeprecationWarning: Setting NumPy dtype names is deprecated, the dtype
will become immutable in a future version
ra.dtype.names = ('f1', 'f2')
/usr/local/lib/python2.6/unittest.py:336: DeprecationWarning: Setting
NumPy dtype names is deprecated, the dtype will become immutable in a
future version
callableObj(*args, **kwargs)
............../usr/local/lib/python2.6/site-packages/numpy/core/tests/test_regression.py:1017:
DeprecationWarning: Setting NumPy dtype names is deprecated, the dtype
will become immutable in a future version
a.dtype.names = b
......................................................................................................................./usr/local/lib/python2.6/pickle.py:1133:
DeprecationWarning: DType strings 'O4' and 'O8' are deprecated because
they are platform specific. Use 'O' instead
value = func(*args)
..........................................................................................K..................................................................................................K......................K..........................................................................................................S...................................../usr/local/lib/python2.6/site-packages/numpy/lib/_iotools.py:857:
DeprecationWarning: Setting NumPy dtype names is deprecated, the dtype
will become immutable in a future version
ndtype.names = validate(ndtype.names, defaultfmt=defaultfmt)
/usr/local/lib/python2.6/site-packages/numpy/lib/_iotools.py:854:
DeprecationWarning: Setting NumPy dtype names is deprecated, the dtype
will become immutable in a future version
ndtype.names = validate([''] * nbtypes, defaultfmt=defaultfmt)
/usr/local/lib/python2.6/site-packages/numpy/lib/_iotools.py:847:
DeprecationWarning: Setting NumPy dtype names is deprecated, the dtype
will become immutable in a future version
defaultfmt=defaultfmt)
......................................................................................................................................................................................./usr/local/lib/python2.6/site-packages/numpy/lib/format.py:358:
DeprecationWarning: DType strings 'O4' and 'O8' are deprecated because
they are platform specific. Use 'O' instead
dtype = numpy.dtype(d['descr'])
/usr/local/lib/python2.6/site-packages/numpy/lib/format.py:449:
DeprecationWarning: DType strings 'O4' and 'O8' are deprecated because
they are platform specific. Use 'O' instead
array = cPickle.load(fp)
.............................................................................................................................................................................................................................................................................................................................../usr/local/lib/python2.6/site-packages/numpy/ma/core.py:366:
DeprecationWarning: DType strings 'O4' and 'O8' are deprecated because
they are platform specific. Use 'O' instead
deflist.append(default_fill_value(np.dtype(currenttype)))
................/usr/local/lib/python2.6/site-packages/numpy/lib/npyio.py:1640:
DeprecationWarning: Setting NumPy dtype names is deprecated, the dtype
will become immutable in a future version
dtype.names = names
........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................
----------------------------------------------------------------------
Ran 3064 tests in 22.795s
OK (KNOWNFAIL=3, SKIP=2)
$ python -c "import numpy; numpy.test()"
Running unit tests for numpy
NumPy version 2.0.0.dev-93236a2
NumPy is installed in /usr/lib64/python2.7/site-packages/numpy
Python version 2.7 (r27:82500, Sep 16 2010, 18:02:00) [GCC 4.5.1
20100907 (Red Hat 4.5.1-3)]
nose version 1.0.0
......................../usr/lib64/python2.7/site-packages/numpy/core/tests/test_datetime.py:1313:
UserWarning: Need pytz library to test datetime timezones
warnings.warn("Need pytz library to test datetime timezones")
...........................................................................................................................................................................................................................................................................................................................................................................................................S............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................K..................................................................................................K......................K..........................................................................................................S...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................
----------------------------------------------------------------------
Ran 3064 tests in 23.180s
OK (KNOWNFAIL=3, SKIP=2)
_______________________________________________
NumPy-Discussion mailing list
NumPy-Discussion@scipy.org
http://mail.scipy.org/mailman/listinfo/numpy-discussion