当前位置: 首页 > 面试题库 >

numpy:如何从argmax结果中获取最大值

姚烨
2023-03-14
问题内容

我有一个任意形状的numpy数组,例如:

a = array([[[ 1,  2],
            [ 3,  4],
            [ 8,  6]],

          [[ 7,  8],
           [ 9,  8],
           [ 3, 12]]])
a.shape = (2, 3, 2)

以及最后一个轴上argmax的结果:

np.argmax(a, axis=-1) = array([[1, 1, 0],
                               [1, 0, 1]])

我想得到最大:

np.max(a, axis=-1) = array([[ 2,  4,  8],
                            [ 8,  9, 12]])

但无需重新计算所有内容。我试过了:

a[np.arange(len(a)), np.argmax(a, axis=-1)]

但是得到了:

IndexError: shape mismatch: indexing arrays could not be broadcast together with shapes (2,) (2,3)

问题答案:

您可以使用advancedindexing-

In [17]: a
Out[17]: 
array([[[ 1,  2],
        [ 3,  4],
        [ 8,  6]],

       [[ 7,  8],
        [ 9,  8],
        [ 3, 12]]])

In [18]: idx = a.argmax(axis=-1)

In [19]: m,n = a.shape[:2]

In [20]: a[np.arange(m)[:,None],np.arange(n),idx]
Out[20]: 
array([[ 2,  4,  8],
       [ 8,  9, 12]])

对于任何数量的维度的通用ndarray情况,如中所述comments by@hpaulj,我们可以使用np.ix_,就像这样-

shp = np.array(a.shape)
dim_idx = list(np.ix_(*[np.arange(i) for i in shp[:-1]]))
dim_idx.append(idx)
out = a[dim_idx]


 类似资料:
  • 我做了一个ping实验,结果是: 我需要的是收到的数据包数,丢包数,min,avg和max。 我试图使用

  • 问题内容: 我从ResultSet获取Date对象时遇到问题。在数据库中,它具有一个值(例如2014-08-01),并且从resultSet获取它之后,它具有另一个值(2014-08-31)。我知道ResultSet的getDate方法返回java.sql.Date,但是我尝试了一些解决方案,例如: 或 但问题是相同的。如果我尝试, 它将抛出NullPointerException。 有人可以解释

  • 问题内容: 有一个ArrayList存储整数值。我需要在此列表中找到最大值。例如,假设arrayList存储的值为:,最大值为。 寻找最大值的有效方法是什么? @Edit:我只是找到一个不确定的解决方案 这将返回最大值。 比较每个值的另一种方法,例如 问题答案: 你可以使用轻松实现所需的内容- 高效阅读 -足够的 Javadoc for Collections.max 根据其元素的自然顺序返回给定

  • 问题内容: 我正在使用CsvJdbc(它是用于csv文件的JDBC驱动程序)来访问csv文件。我不知道csv文件包含多少列。如何获得列数?是否有任何JDBC函数?我在java.sql.ResultSet中找不到任何方法。 为了访问该文件,我使用类似于CsvJdbc网站上示例的代码。 问题答案: 您可以从ResultSetMetaData获取列号:

  • 问题内容: NumPy提出了一种通过来获取数组最大值的索引的方法。 我想要类似的事情,但是返回N最大值的索引。 例如,如果我有一个数组,,将返回的索引相对应的元素。 问题答案: 我想出的最简单的方法是: 这涉及数组的完整排序。我想知道是否提供了一种进行部分排序的内置方法。到目前为止,我还没有找到一个。 如果此解决方案太慢(尤其是对于小型解决方案n),则可能值得考虑使用进行编码。

  • 我有麻烦得到地理定位坐标从一个promise函数返回。我使用下面的代码从这里:如何geolocation.get货币位置返回值? 我试过: 有人能给我解释一下从promise中获得价值的正确方法是什么吗?谢啦