二维数组python上的最小值

光盘123

我为以下问题简化了以下结构的数组:

8 2 3 4 5 6
3 6 6 7 2 6
3 8 5 1 2 9
6 4 2 7 8 3

我希望在此二维数组中找到最小值,但是使用内置的min函数会返回值错误:

ValueError:具有多个元素的数组的真值不明确。使用a.any()或a.all()

我已经研究了使用np.argmin的替代方法:

https://docs.scipy.org/doc/numpy/reference/generation/numpy.argmin.html

但是,它仅沿单个轴求值,并沿单个行/列返回最小值的索引,而我希望对整个数组求值,而返回最小值而不是索引。

如果可以返回数组中最低项目的索引值,那么这也是优选的,因为可以轻松找到最低值。

编辑:由于下面的评论np.min是我正在寻找的解决方案,我不知道它的存在,所以我的答案就解决了。

碱性

但是,它仅沿单个轴求值,并沿单个行/列返回最小值的索引,而我希望对整个数组求值,而返回最小值而不是索引。

numpy.argmin默认情况下不沿单轴求值,默认值是沿展平的矩阵求值,它返回展平数组中的线性索引;numpy您链接文档中:

默认情况下,索引位于平面数组中,否则沿指定的轴。

无论哪种方式,使用numpy.aminnumpy.min回的最小,或等效为一个阵列arrname使用arrname.min()如前所述,numpy.argmin返回最小值索引(当然,您可以使用该索引通过对数组进行索引来返回最小值)。您还可以使用展平为一个单一维度的数组,arrname.flatten()并将其传递给内置min函数。

以下四种方法可以产生所需的结果。

import numpy as np

values = np.array([
    [8,2,3,4,5,6],
    [3,6,6,7,2,6],
    [3,8,5,1,2,9],
    [6,4,2,7,8,3]])

values.min()          # = 1
np.min(values)        # = 1
np.amin(values)       # = 1
min(values.flatten()) # = 1

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章