From a1faa1b6883c47333508a0476c1304b0a8a3f64e Mon Sep 17 00:00:00 2001 From: Mark Wiebe Date: Wed, 17 Aug 2011 10:25:40 -0700 Subject: ENH: missingdata: Move some of the refactored reduction code into the API Doing this so that it can be used both in multiarray and umath, to make writing new reduction operations generally easier. Also made PyArray_Squeeze work with NA-masked arrays. --- doc/release/2.0.0-notes.rst | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) (limited to 'doc/release') diff --git a/doc/release/2.0.0-notes.rst b/doc/release/2.0.0-notes.rst index d50797cb3..ca9bc4147 100644 --- a/doc/release/2.0.0-notes.rst +++ b/doc/release/2.0.0-notes.rst @@ -31,7 +31,7 @@ What works with NA: + ndarray.clip, ndarray.min, ndarray.max, ndarray.sum, ndarray.prod, ndarray.conjugate, ndarray.diagonal, ndarray.flatten + numpy.concatenate, numpy.column_stack, numpy.hstack, - numpy.vstack, numpy.dstack + numpy.vstack, numpy.dstack, numpy.squeeze What doesn't work with NA: * Fancy indexing, such as with lists and partial boolean masks. @@ -50,6 +50,19 @@ What doesn't work with NA: numpy.append, numpy.insert (relies on fancy indexing), numpy.where, +Differences with R: + * R's parameter rm.na=T is spelled skipna=True in NumPy. + * np.isna(nan) is False, but R's is.na(nan) is TRUE. This is because + NumPy's NA is treated independently of the underlying data type. + * Boolean indexing, where the result is compressed to just + the elements with true in the mask, raises if the booelan mask + has an NA value in it. This is because that value could be either + True or False, meaning the count of the output array is actually + NA. R treats this case in a manner inconsistent with the NA model, + returning NA values in the spots where the boolean index has NA. + This may have a practical advantage in spite of violating the + NA theoretical model, so NumPy could adopt the behavior if necessary + Custom formatter for printing arrays @@ -76,6 +89,11 @@ and depended in an undesirable way on the particular axis chosen for concatenation. A bug was also fixed which silently allowed out of bounds axis arguments. +The ufuncs logical_or, logical_and, and logical_not now follow Python's +behavior with object arrays, instead of trying to call methods on the +objects. For example the expression (3 and 'test') produces the string +'test', and now np.logical_and(np.array(3, 'O'), np.array('test', 'O')) +produces 'test' as well. Deprecations ============ -- cgit v1.2.1