From c9d1849332ae5bf73299ea1268f6a55f78624688 Mon Sep 17 00:00:00 2001 From: Mark Wiebe Date: Fri, 28 Jan 2011 12:43:22 -0800 Subject: ENH: core: Add dtype= and order= parameters to zeros_like, ones_like, and empty_like --- numpy/core/numeric.py | 80 ++++++++------------------------------------------- 1 file changed, 12 insertions(+), 68 deletions(-) (limited to 'numpy/core/numeric.py') diff --git a/numpy/core/numeric.py b/numpy/core/numeric.py index 43456b97f..fc935b4cb 100644 --- a/numpy/core/numeric.py +++ b/numpy/core/numeric.py @@ -62,17 +62,24 @@ ufunc = type(sin) # originally from Fernando Perez's IPython -def zeros_like(a): +def zeros_like(a, dtype=None, order='K'): """ Return an array of zeros with the same shape and type as a given array. - Equivalent to ``a.copy().fill(0)``. + With default paramters, is equivalent to ``a.copy().fill(0)``. 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. Returns ------- @@ -105,72 +112,8 @@ def zeros_like(a): array([ 0., 0., 0.]) """ - if isinstance(a, ndarray): - res = ndarray.__new__(type(a), a.shape, a.dtype, order=a.flags.fnc) - res.fill(0) - return res - try: - wrap = a.__array_wrap__ - except AttributeError: - wrap = None - a = asarray(a) - res = zeros(a.shape, a.dtype) - if wrap: - res = wrap(res) - return res - -def empty_like(a): - """ - Return a new array with the same shape and type as a given array. - - Parameters - ---------- - a : array_like - The shape and data-type of `a` define these same attributes of the - returned array. - - Returns - ------- - out : ndarray - Array of random data with the same shape and type as `a`. - - See Also - -------- - ones_like : Return an array of ones with shape and type of input. - zeros_like : Return an array of zeros with shape and type of input. - empty : Return a new uninitialized array. - ones : Return a new array setting values to one. - zeros : Return a new array setting values to zero. - - Notes - ----- - This function does *not* initialize the returned array; to do that use - `zeros_like` or `ones_like` instead. It may be marginally faster than - the functions that do set the array values. - - Examples - -------- - >>> a = ([1,2,3], [4,5,6]) # a is array-like - >>> np.empty_like(a) - array([[-1073741821, -1073741821, 3], #random - [ 0, 0, -1073741821]]) - >>> a = np.array([[1., 2., 3.],[4.,5.,6.]]) - >>> np.empty_like(a) - array([[ -2.00000715e+000, 1.48219694e-323, -2.00000572e+000],#random - [ 4.38791518e-305, -2.00000715e+000, 4.17269252e-309]]) - - """ - if isinstance(a, ndarray): - res = ndarray.__new__(type(a), a.shape, a.dtype, order=a.flags.fnc) - return res - try: - wrap = a.__array_wrap__ - except AttributeError: - wrap = None - a = asarray(a) - res = empty(a.shape, a.dtype) - if wrap: - res = wrap(res) + res = empty_like(a, dtype=dtype, order=order) + res.fill(0) return res # end Fernando's utilities @@ -199,6 +142,7 @@ array = multiarray.array zeros = multiarray.zeros count_nonzero = multiarray.count_nonzero empty = multiarray.empty +empty_like = multiarray.empty_like fromstring = multiarray.fromstring fromiter = multiarray.fromiter fromfile = multiarray.fromfile -- cgit v1.2.1