I want to find the minimum of N numpy matrices elementwise (but with a twist, read till the end). To show, I create 3 numpy matrices as follows:
>>> a = np.random.randint(100, size=(3,3))
>>> b = np.random.randint(100, size=(3,3))
>>> c = np.random.randint(100, size=(3,3))
>>> a
array([[79,  7, 71],
       [14, 34, 68],
       [98, 97,  6]])
>>> b
array([[28, 25, 95],
       [69, 46, 39],
       [90, 11, 21]])
>>> c
array([[56,  3, 67],
       [44, 41, 44],
       [66, 25, 42]])
I except my output d to be:
d = array([[28,  3, 67],
         [14, 34, 39],
         [66, 11,  6]])
I also need to retain the information from where does the each element in the d matrix is coming from. So if I label a, b, c as class 0, 1, 2. In the end I need to have a m matrix like this:
m = array([[1, 2, 2],
           [0, 0, 1],
           [2, 1, 0]])
I prefere no-loops based numpy approach.
Advertisement
Answer
To find the minimum numbers:
d = np.min([a, b, c], axis=0)
And their origins:
m = np.argmin([a, b, c], axis=0)