diff options
author | Mark Wiebe <mwwiebe@gmail.com> | 2011-08-19 17:32:07 -0700 |
---|---|---|
committer | Charles Harris <charlesr.harris@gmail.com> | 2011-08-27 07:26:58 -0600 |
commit | 3fec8d3db532ee3adba31f1fe076caa343e0856a (patch) | |
tree | bb46fd7f36d372f5f22496847af4a8211ef72626 | |
parent | 840323e81c41f02926a0d29b62b202a74b1fc2fa (diff) | |
download | numpy-3fec8d3db532ee3adba31f1fe076caa343e0856a.tar.gz |
ENH: missingdata: Add the maskna= parameter to np.ones and np.ones_like
-rw-r--r-- | numpy/core/code_generators/generate_umath.py | 6 | ||||
-rw-r--r-- | numpy/core/code_generators/ufunc_docstrings.py | 20 | ||||
-rw-r--r-- | numpy/core/numeric.py | 123 | ||||
-rw-r--r-- | numpy/core/src/multiarray/number.c | 6 | ||||
-rw-r--r-- | numpy/core/src/multiarray/number.h | 2 | ||||
-rw-r--r-- | numpy/core/src/umath/loops.c.src | 12 | ||||
-rw-r--r-- | numpy/core/src/umath/loops.h | 40 | ||||
-rw-r--r-- | numpy/core/src/umath/loops.h.src | 10 | ||||
-rw-r--r-- | numpy/core/tests/test_maskna.py | 6 | ||||
-rw-r--r-- | numpy/core/tests/test_numeric.py | 16 |
10 files changed, 154 insertions, 87 deletions
diff --git a/numpy/core/code_generators/generate_umath.py b/numpy/core/code_generators/generate_umath.py index 8771a040d..5fe31b945 100644 --- a/numpy/core/code_generators/generate_umath.py +++ b/numpy/core/code_generators/generate_umath.py @@ -330,9 +330,11 @@ defdict = { TD(ints+inexact), TD(O, f='Py_reciprocal'), ), -'ones_like' : +# This is no longer used as numpy.ones_like, however it is +# still used by some internal calls. +'_ones_like' : Ufunc(1, 1, None, - docstrings.get('numpy.core.umath.ones_like'), + docstrings.get('numpy.core.umath._ones_like'), 'PyUFunc_OnesLikeTypeResolution', TD(noobj), TD(O, f='Py_get_one'), diff --git a/numpy/core/code_generators/ufunc_docstrings.py b/numpy/core/code_generators/ufunc_docstrings.py index 591a898ed..760617340 100644 --- a/numpy/core/code_generators/ufunc_docstrings.py +++ b/numpy/core/code_generators/ufunc_docstrings.py @@ -2490,24 +2490,16 @@ add_newdoc('numpy.core.umath', 'not_equal', """) -add_newdoc('numpy.core.umath', 'ones_like', +add_newdoc('numpy.core.umath', '_ones_like', """ - Returns an array of ones with the same shape and type as a given array. - - Equivalent to ``a.copy().fill(1)``. - - Please refer to the documentation for `zeros_like` for further details. + This function used to be the numpy.ones_like, but now a + specific function for that has been written for consistency with + the other *_like functions. It is only used internally in a limited + fashion now. See Also -------- - zeros_like, ones - - Examples - -------- - >>> a = np.array([[1, 2, 3], [4, 5, 6]]) - >>> np.ones_like(a) - array([[1, 1, 1], - [1, 1, 1]]) + ones_like """) diff --git a/numpy/core/numeric.py b/numpy/core/numeric.py index 00184505d..7a879719a 100644 --- a/numpy/core/numeric.py +++ b/numpy/core/numeric.py @@ -5,7 +5,7 @@ __all__ = ['newaxis', 'ndarray', 'flatiter', 'nditer', 'nested_iters', 'ufunc', 'concatenate', 'fastCopyAndTranspose', 'lexsort', 'set_numeric_ops', 'can_cast', 'promote_types', 'min_scalar_type', 'result_type', 'asarray', 'asanyarray', 'ascontiguousarray', 'asfortranarray', - 'isfortran', 'isna', 'empty_like', 'zeros_like', + 'isfortran', 'isna', 'empty_like', 'zeros_like', 'ones_like', 'correlate', 'convolve', 'inner', 'dot', 'einsum', 'outer', 'vdot', 'alterdot', 'restoredot', 'roll', 'rollaxis', 'cross', 'tensordot', 'array2string', 'get_printoptions', 'set_printoptions', @@ -62,7 +62,6 @@ copyto = multiarray.copyto ufunc = type(sin) -# originally from Fernando Perez's IPython def zeros_like(a, dtype=None, order='K', subok=True, maskna=False): """ Return an array of zeros with the same shape and type as a given array. @@ -119,7 +118,93 @@ def zeros_like(a, dtype=None, order='K', subok=True, maskna=False): multiarray.copyto(res, 0, casting='unsafe') return res -# end Fernando's utilities +def ones(shape, dtype=None, order='C', maskna=False): + """ + Return a new array of given shape and type, filled with ones. + + Please refer to the documentation for `zeros` for further details. + + See Also + -------- + zeros, ones_like + + Examples + -------- + >>> np.ones(5) + array([ 1., 1., 1., 1., 1.]) + + >>> np.ones((5,), dtype=np.int) + array([1, 1, 1, 1, 1]) + + >>> np.ones((2, 1)) + array([[ 1.], + [ 1.]]) + + >>> s = (2,2) + >>> np.ones(s) + array([[ 1., 1.], + [ 1., 1.]]) + + """ + a = empty(shape, dtype, order, maskna) + multiarray.copyto(a, 1, casting='unsafe') + return a + +def ones_like(a, dtype=None, order='K', subok=True, maskna=False): + """ + Return an array of ones with the same shape and type as a given array. + + With default parameters, is equivalent to ``a.copy().fill(1)``. + + Parameters + ---------- + a : array_like + The shape and data-type of `a` define these same attributes of + the returned array. + dtype : data-type, optional + Overrides the data type of the result. + order : {'C', 'F', 'A', or 'K'}, optional + Overrides the memory layout of the result. 'C' means C-order, + 'F' means F-order, 'A' means 'F' if `a` is Fortran contiguous, + 'C' otherwise. 'K' means match the layout of `a` as closely + as possible. + maskna : boolean + If this is true, the returned array will have an NA mask. + + Returns + ------- + out : ndarray + Array of ones with the same shape and type as `a`. + + See Also + -------- + zeros_like : Return an array of zeros with shape and type of input. + empty_like : Return an empty array with shape and type of input. + zeros : Return a new array setting values to zero. + ones : Return a new array setting values to one. + empty : Return a new uninitialized array. + + Examples + -------- + >>> x = np.arange(6) + >>> x = x.reshape((2, 3)) + >>> x + array([[0, 1, 2], + [3, 4, 5]]) + >>> np.ones_like(x) + array([[1, 1, 1], + [1, 1, 1]]) + + >>> y = np.arange(3, dtype=np.float) + >>> y + array([ 0., 1., 2.]) + >>> np.ones_like(y) + array([ 1., 1., 1.]) + + """ + res = empty_like(a, dtype=dtype, order=order, subok=subok, maskna=maskna) + multiarray.copyto(res, 1, casting='unsafe') + return res def extend_all(module): @@ -1808,38 +1893,6 @@ def _maketup(descr, val): res = [_maketup(fields[name][0],val) for name in dt.names] return tuple(res) -def ones(shape, dtype=None, order='C'): - """ - Return a new array of given shape and type, filled with ones. - - Please refer to the documentation for `zeros` for further details. - - See Also - -------- - zeros, ones_like - - Examples - -------- - >>> np.ones(5) - array([ 1., 1., 1., 1., 1.]) - - >>> np.ones((5,), dtype=np.int) - array([1, 1, 1, 1, 1]) - - >>> np.ones((2, 1)) - array([[ 1.], - [ 1.]]) - - >>> s = (2,2) - >>> np.ones(s) - array([[ 1., 1.], - [ 1., 1.]]) - - """ - a = empty(shape, dtype, order) - multiarray.copyto(a, 1, casting='unsafe') - return a - def identity(n, dtype=None): """ Return the identity array. diff --git a/numpy/core/src/multiarray/number.c b/numpy/core/src/multiarray/number.c index 8bb9dfc3d..861ef5c05 100644 --- a/numpy/core/src/multiarray/number.c +++ b/numpy/core/src/multiarray/number.c @@ -52,7 +52,7 @@ PyArray_SetNumericOps(PyObject *dict) SET(power); SET(square); SET(reciprocal); - SET(ones_like); + SET(_ones_like); SET(sqrt); SET(negative); SET(absolute); @@ -103,7 +103,7 @@ PyArray_GetNumericOps(void) GET(power); GET(square); GET(reciprocal); - GET(ones_like); + GET(_ones_like); GET(sqrt); GET(negative); GET(absolute); @@ -348,7 +348,7 @@ fast_scalar_power(PyArrayObject *a1, PyObject *o2, int inplace) fastop = n_ops.reciprocal; } else if (exp == 0.0) { - fastop = n_ops.ones_like; + fastop = n_ops._ones_like; } else if (exp == 0.5) { fastop = n_ops.sqrt; diff --git a/numpy/core/src/multiarray/number.h b/numpy/core/src/multiarray/number.h index 8f1cb3b91..0018b7348 100644 --- a/numpy/core/src/multiarray/number.h +++ b/numpy/core/src/multiarray/number.h @@ -10,7 +10,7 @@ typedef struct { PyObject *power; PyObject *square; PyObject *reciprocal; - PyObject *ones_like; + PyObject *_ones_like; PyObject *sqrt; PyObject *negative; PyObject *absolute; diff --git a/numpy/core/src/umath/loops.c.src b/numpy/core/src/umath/loops.c.src index 0d1841b47..f4b0fc0df 100644 --- a/numpy/core/src/umath/loops.c.src +++ b/numpy/core/src/umath/loops.c.src @@ -611,7 +611,7 @@ BOOL_@kind@(char **args, npy_intp *dimensions, npy_intp *steps, void *NPY_UNUSED /**end repeat**/ NPY_NO_EXPORT void -BOOL_ones_like(char **args, npy_intp *dimensions, npy_intp *steps, void *NPY_UNUSED(data)) +BOOL__ones_like(char **args, npy_intp *dimensions, npy_intp *steps, void *NPY_UNUSED(data)) { OUTPUT_LOOP { *((Bool *)op1) = 1; @@ -642,7 +642,7 @@ BOOL_ones_like(char **args, npy_intp *dimensions, npy_intp *steps, void *NPY_UNU #define @S@@TYPE@_fmin @S@@TYPE@_minimum NPY_NO_EXPORT void -@S@@TYPE@_ones_like(char **args, npy_intp *dimensions, npy_intp *steps, void *NPY_UNUSED(data)) +@S@@TYPE@__ones_like(char **args, npy_intp *dimensions, npy_intp *steps, void *NPY_UNUSED(data)) { OUTPUT_LOOP { *((@s@@type@ *)op1) = 1; @@ -985,7 +985,7 @@ TIMEDELTA_sign(char **args, npy_intp *dimensions, npy_intp *steps, void *NPY_UNU */ NPY_NO_EXPORT void -@TYPE@_ones_like(char **args, npy_intp *dimensions, npy_intp *steps, void *NPY_UNUSED(data)) +@TYPE@__ones_like(char **args, npy_intp *dimensions, npy_intp *steps, void *NPY_UNUSED(data)) { OUTPUT_LOOP { *((@type@ *)op1) = 1; @@ -1458,7 +1458,7 @@ NPY_NO_EXPORT void } NPY_NO_EXPORT void -@TYPE@_ones_like(char **args, npy_intp *dimensions, npy_intp *steps, void *NPY_UNUSED(data)) +@TYPE@__ones_like(char **args, npy_intp *dimensions, npy_intp *steps, void *NPY_UNUSED(data)) { OUTPUT_LOOP { *((@type@ *)op1) = 1; @@ -1762,7 +1762,7 @@ HALF_reciprocal(char **args, npy_intp *dimensions, npy_intp *steps, void *NPY_UN } NPY_NO_EXPORT void -HALF_ones_like(char **args, npy_intp *dimensions, npy_intp *steps, void *NPY_UNUSED(data)) +HALF__ones_like(char **args, npy_intp *dimensions, npy_intp *steps, void *NPY_UNUSED(data)) { OUTPUT_LOOP { *((npy_half *)op1) = NPY_HALF_ONE; @@ -2093,7 +2093,7 @@ C@TYPE@_reciprocal(char **args, npy_intp *dimensions, npy_intp *steps, void *NPY } NPY_NO_EXPORT void -C@TYPE@_ones_like(char **args, npy_intp *dimensions, npy_intp *steps, void *NPY_UNUSED(data)) +C@TYPE@__ones_like(char **args, npy_intp *dimensions, npy_intp *steps, void *NPY_UNUSED(data)) { OUTPUT_LOOP { ((@type@ *)op1)[0] = 1; diff --git a/numpy/core/src/umath/loops.h b/numpy/core/src/umath/loops.h index 2a792bf5b..9b16ed3fc 100644 --- a/numpy/core/src/umath/loops.h +++ b/numpy/core/src/umath/loops.h @@ -161,7 +161,7 @@ BOOL_logical_not(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(fu NPY_NO_EXPORT void -BOOL_ones_like(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(data)); +BOOL__ones_like(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(data)); /* ***************************************************************************** @@ -178,7 +178,7 @@ BOOL_ones_like(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(data #define BYTE_fmin BYTE_minimum NPY_NO_EXPORT void -BYTE_ones_like(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(data)); +BYTE__ones_like(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(data)); NPY_NO_EXPORT void BYTE_square(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(data)); @@ -301,7 +301,7 @@ BYTE_fmod(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); #define UBYTE_fmin UBYTE_minimum NPY_NO_EXPORT void -UBYTE_ones_like(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(data)); +UBYTE__ones_like(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(data)); NPY_NO_EXPORT void UBYTE_square(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(data)); @@ -451,7 +451,7 @@ UBYTE_remainder(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(fun #define SHORT_fmin SHORT_minimum NPY_NO_EXPORT void -SHORT_ones_like(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(data)); +SHORT__ones_like(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(data)); NPY_NO_EXPORT void SHORT_square(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(data)); @@ -574,7 +574,7 @@ SHORT_fmod(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); #define USHORT_fmin USHORT_minimum NPY_NO_EXPORT void -USHORT_ones_like(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(data)); +USHORT__ones_like(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(data)); NPY_NO_EXPORT void USHORT_square(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(data)); @@ -724,7 +724,7 @@ USHORT_remainder(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(fu #define INT_fmin INT_minimum NPY_NO_EXPORT void -INT_ones_like(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(data)); +INT__ones_like(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(data)); NPY_NO_EXPORT void INT_square(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(data)); @@ -847,7 +847,7 @@ INT_fmod(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); #define UINT_fmin UINT_minimum NPY_NO_EXPORT void -UINT_ones_like(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(data)); +UINT__ones_like(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(data)); NPY_NO_EXPORT void UINT_square(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(data)); @@ -997,7 +997,7 @@ UINT_remainder(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func #define LONG_fmin LONG_minimum NPY_NO_EXPORT void -LONG_ones_like(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(data)); +LONG__ones_like(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(data)); NPY_NO_EXPORT void LONG_square(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(data)); @@ -1120,7 +1120,7 @@ LONG_fmod(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); #define ULONG_fmin ULONG_minimum NPY_NO_EXPORT void -ULONG_ones_like(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(data)); +ULONG__ones_like(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(data)); NPY_NO_EXPORT void ULONG_square(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(data)); @@ -1270,7 +1270,7 @@ ULONG_remainder(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(fun #define LONGLONG_fmin LONGLONG_minimum NPY_NO_EXPORT void -LONGLONG_ones_like(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(data)); +LONGLONG__ones_like(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(data)); NPY_NO_EXPORT void LONGLONG_square(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(data)); @@ -1393,7 +1393,7 @@ LONGLONG_fmod(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func) #define ULONGLONG_fmin ULONGLONG_minimum NPY_NO_EXPORT void -ULONGLONG_ones_like(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(data)); +ULONGLONG__ones_like(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(data)); NPY_NO_EXPORT void ULONGLONG_square(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(data)); @@ -1662,7 +1662,7 @@ HALF_reciprocal(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(dat NPY_NO_EXPORT void -HALF_ones_like(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(data)); +HALF__ones_like(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(data)); NPY_NO_EXPORT void HALF_conjugate(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); @@ -1816,7 +1816,7 @@ FLOAT_reciprocal(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(da NPY_NO_EXPORT void -FLOAT_ones_like(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(data)); +FLOAT__ones_like(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(data)); NPY_NO_EXPORT void FLOAT_conjugate(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); @@ -1970,7 +1970,7 @@ DOUBLE_reciprocal(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(d NPY_NO_EXPORT void -DOUBLE_ones_like(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(data)); +DOUBLE__ones_like(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(data)); NPY_NO_EXPORT void DOUBLE_conjugate(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); @@ -2124,7 +2124,7 @@ LONGDOUBLE_reciprocal(char **args, intp *dimensions, intp *steps, void *NPY_UNUS NPY_NO_EXPORT void -LONGDOUBLE_ones_like(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(data)); +LONGDOUBLE__ones_like(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(data)); NPY_NO_EXPORT void LONGDOUBLE_conjugate(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); @@ -2254,7 +2254,7 @@ NPY_NO_EXPORT void CFLOAT_reciprocal(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(data)); NPY_NO_EXPORT void -CFLOAT_ones_like(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(data)); +CFLOAT__ones_like(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(data)); NPY_NO_EXPORT void CFLOAT_conjugate(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); @@ -2370,7 +2370,7 @@ NPY_NO_EXPORT void CDOUBLE_reciprocal(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(data)); NPY_NO_EXPORT void -CDOUBLE_ones_like(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(data)); +CDOUBLE__ones_like(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(data)); NPY_NO_EXPORT void CDOUBLE_conjugate(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); @@ -2486,7 +2486,7 @@ NPY_NO_EXPORT void CLONGDOUBLE_reciprocal(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(data)); NPY_NO_EXPORT void -CLONGDOUBLE_ones_like(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(data)); +CLONGDOUBLE__ones_like(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(data)); NPY_NO_EXPORT void CLONGDOUBLE_conjugate(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); @@ -2547,7 +2547,7 @@ TIMEDELTA_sign(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func #line 432 NPY_NO_EXPORT void -DATETIME_ones_like(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(data)); +DATETIME__ones_like(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(data)); #line 440 NPY_NO_EXPORT void @@ -2587,7 +2587,7 @@ DATETIME_minimum(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(fu #line 432 NPY_NO_EXPORT void -TIMEDELTA_ones_like(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(data)); +TIMEDELTA__ones_like(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(data)); #line 440 NPY_NO_EXPORT void diff --git a/numpy/core/src/umath/loops.h.src b/numpy/core/src/umath/loops.h.src index fdedc1933..0b59b3095 100644 --- a/numpy/core/src/umath/loops.h.src +++ b/numpy/core/src/umath/loops.h.src @@ -65,7 +65,7 @@ BOOL_@kind@(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); /**end repeat**/ NPY_NO_EXPORT void -BOOL_ones_like(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(data)); +BOOL__ones_like(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(data)); /* ***************************************************************************** @@ -90,7 +90,7 @@ BOOL_ones_like(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(data #define @S@@TYPE@_fmin @S@@TYPE@_minimum NPY_NO_EXPORT void -@S@@TYPE@_ones_like(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(data)); +@S@@TYPE@__ones_like(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(data)); NPY_NO_EXPORT void @S@@TYPE@_square(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(data)); @@ -255,7 +255,7 @@ NPY_NO_EXPORT void NPY_NO_EXPORT void -@TYPE@_ones_like(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(data)); +@TYPE@__ones_like(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(data)); NPY_NO_EXPORT void @TYPE@_conjugate(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); @@ -369,7 +369,7 @@ NPY_NO_EXPORT void C@TYPE@_reciprocal(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(data)); NPY_NO_EXPORT void -C@TYPE@_ones_like(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(data)); +C@TYPE@__ones_like(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(data)); NPY_NO_EXPORT void C@TYPE@_conjugate(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func)); @@ -431,7 +431,7 @@ TIMEDELTA_sign(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(func */ NPY_NO_EXPORT void -@TYPE@_ones_like(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(data)); +@TYPE@__ones_like(char **args, intp *dimensions, intp *steps, void *NPY_UNUSED(data)); /**begin repeat1 * #kind = equal, not_equal, greater, greater_equal, less, less_equal# diff --git a/numpy/core/tests/test_maskna.py b/numpy/core/tests/test_maskna.py index e284f841b..8fd3fb174 100644 --- a/numpy/core/tests/test_maskna.py +++ b/numpy/core/tests/test_maskna.py @@ -62,6 +62,12 @@ def test_array_maskna_construction(): assert_(a.flags.maskna) assert_equal(np.isna(a), False) + a = np.ones((3,)) + assert_(not a.flags.maskna) + a = np.ones((3,), maskna=True) + assert_(a.flags.maskna) + assert_equal(np.isna(a), False) + # np.empty returns all NAs if maskna is set to True a = np.empty((3,)) assert_(not a.flags.maskna) diff --git a/numpy/core/tests/test_numeric.py b/numpy/core/tests/test_numeric.py index 2f8c2fcc9..205bf56c4 100644 --- a/numpy/core/tests/test_numeric.py +++ b/numpy/core/tests/test_numeric.py @@ -1324,7 +1324,7 @@ class TestLikeFuncs(TestCase): if not value is None: assert_(all(dz == value)) - # Test the 'subok' parameter' + # Test the 'subok' parameter a = np.matrix([[1,2],[3,4]]) b = like_function(a) @@ -1333,6 +1333,20 @@ class TestLikeFuncs(TestCase): b = like_function(a, subok=False) assert_(not (type(b) is np.matrix)) + # Test that 'maskna=True' works + a = np.arange(6).reshape(2,3) + res = like_function(a, maskna=True) + assert_(res.flags.maskna) + assert_(res.flags.ownmaskna) + assert_equal(res.shape, a.shape) + assert_equal(res.dtype, a.dtype) + + # Test that no NA mask is created when the prototype is NA-masked + a = np.arange(6, maskna=True).reshape(2,3) + assert_(a.flags.maskna) + res = like_function(a) + assert_(not res.flags.maskna) + def test_ones_like(self): self.check_like_function(np.ones_like, 1) |