首页 > 解决方案 > 找到 N 个 numpy 矩阵的最小值?

问题描述

我想逐元素地找到 N numpy 矩阵的最小值(但稍作改动,请阅读到最后)。为了展示,我创建了 3 个 numpy 矩阵,如下所示:

>>> 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]])

我除了我的输出d是:

d = array([[28,  3, 67],
         [14, 34, 39],
         [66, 11,  6]])

我还需要保留 d 矩阵中的每个元素来自何处的信息。因此,如果我将 a、b、c 标记为 0、1、2 类。最后我需要一个m这样的矩阵:

m = array([[1, 2, 2],
           [0, 0, 1],
           [2, 1, 0]])

我更喜欢基于无循环的 numpy 方法。

标签: pythonarraysnumpy

解决方案


要找到最小数字:

d = np.min([a, b, c], axis=0)

以及它们的起源:

m = np.argmin([a, b, c], axis=0)

推荐阅读