Wiz123
Wiz123

Reputation: 920

Maximum and Minimum values from multiple arrays in Python

I have two arrays X1 and X2. I want to find maximum and minimum values from these two arrays in one step. But it runs into an error. I present the expected output.

import numpy as np

X1 = np.array([[ 527.25      ],
       [2604.89634575],
       [ 946.77085166],
       [ 816.79051828],
       [1388.77873104],
       [4633.70349825],
       [1125.9493112 ],
       [1811.67700025],
       [ 718.19141262],
       [ 640.83306256],
       [ 578.51918766],
       [ 522.02970297]])   

X2 = np.array([[ 527.25      ],
       [2604.89634575],
       [ 941.87856824],
       [ 781.29465624],
       [1388.77873104],
       [4633.70349825],
       [1125.9493112 ],
       [1811.67700025],
       [ 319.09009796],
       [ 558.12142224],
       [ 484.73489944],
       [ 473.62756082]])  

Max=max(X1,X2)
Min=min(X1,X2)

The error is

in <module>
    Max=max(X1,X2)

ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

The expected output is

array([4633.70349825])
array([319.09009796])

Upvotes: 2

Views: 3122

Answers (2)

I&#39;mahdi
I&#39;mahdi

Reputation: 24049

You can use np.ufunc.reduce with multiple axis to get as array as you want.

(first find max on axis=1 from X1 , X2 then find max on axis=0 from result.)

np.maximum.reduce([X1, X2], axis=(1,0))
# array([4633.70349825])

np.minimum.reduce([X1, X2], axis=(1,0))
# array([319.09009796])

Or try this to get as value:

>>> np.max((X1,X2))
4633.70349825

>>> np.min((X1,X2))
319.09009796

Or try this to get as array:

>>> max(max(X1), max(X2))
array([4633.70349825])

>>> min(min(X1), min(X2))
array([319.09009796])

Upvotes: 3

Dani Mesejo
Dani Mesejo

Reputation: 61910

You need to wrap the arrays in a array-like object (list, tuple). See below:

ma = np.max([X1, X2])
mi = np.min([X1, X2])
print(ma)
print(mi)

Output

4633.70349825
319.09009796

By default both max and min will flatten the input, from the documentation:

axis None or int or tuple of ints, optional Axis or axes along which to operate. By default, flattened input is used.

Upvotes: 1

Related Questions