# [Numpy-discussion] strange behavior of np.minimum and np.maximum

Zachary Pincus zachary.pincus at yale.edu
Wed Apr 6 07:59:00 EDT 2011

```>
>>>> a, b, c = np.array(), np.array(), np.array()
>>>> min_val = np.minimum(a, b, c)
>>>> min_val
> array()
>>>> max_val = np.maximum(a, b, c)
>>>> max_val
> array()
>>>> min_val
> array()
>
> (I'm using numpy 1.4, and I observed the same behavior with numpy
> 2.0.0.dev8600 on another machine). I'm quite surprised by this
> behavior
> (It took me quite a long time to figure out what was happening in a
> script of mine that wasn't giving what I expected, because of
> np.maximum changing the output of np.minimum). Is it a bug, or am I
> missing something?

Read the documentation for numpy.minimum and numpy.maximum: they give
you element-wise minimum values from two arrays passed as arguments.
E.g.:

>>> numpy.minimum([1,2,3],[3,2,1])
array([1, 2, 1])

The optional third parameter to numpy.minimum is an "out" array - an
array to place the results into instead of making a new array for that
purpose. (This can save time / memory in various cases.)

This should therefore be enough to explain the above behavior. (That
is, min_val and max_val wind up being just other names for the array
'c', which gets modified in-place by the numpy.minimum and
numpy.maximum.)

If you want the minimum value of a sequence of arbitrary length, use
the python min() function. If you have a numpy array already and you
want the minimum (global, or along a particular axis), use the min()
method of the array, or numpy.min(arr).

Zach

```