【问题标题】:numpy argmax in array with multiple brackets带有多个括号的数组中的numpy argmax
【发布时间】:2020-01-21 04:28:42
【问题描述】:

我在将 argmax 应用于具有多个括号的数组时遇到问题。 在现实生活中,由于 pytorch 张量,我得到了这个。 这里我可以举个例子:

a = np.array([[1.0, 1.1],[2.1,2.0]])
np.argmax(a,axis=1)

array([1, 0])

没错。但是:

a = np.array([[[1.0, 1.1]],[[2.1,2.0]]])
np.argmax(a,axis=1)

array([[0, 0],
       [0, 0]])

它没有给我我所期望的。 考虑到实际上我有这个级别的内括号:

a = np.array([[[[1.0, 1.1]]],[[[2.1,2.0]]]])

【问题讨论】:

  • 第一个 a 是 (2,2) 形状。第二个是(2,1,2)。第三个是(2,1,1,2)。 np.argmax(a, axis=-1)) 将获得相同的值,但形状分别为 (2,)、(2,1) 和 (2,1,1)。

标签: arrays python-3.x numpy pytorch torch


【解决方案1】:

使用.squeeze() 和一个负数索引。

a = np.array([[[[1.0, 1.1]]], [[[2.1, 2.0]]]])
np.argmax(a, axis = -1).squeeze()

array([1, 0], dtype=int32)

【讨论】:

    【解决方案2】:

    一种可能的解决方案是增加轴值:

    a = np.array([[[[1.0, 1.1]]],[[[2.1,2.0]]]])
    np.argmax(a,axis=3)
    
    array([[[1]],
           [[0]]])
    

    但我还有内括号。

    【讨论】:

    • 内括号表示尺寸 1 的尺寸。你知道为什么你首先有一个 (2,1,1,2) 形状吗?尺寸不只是随机添加!您可能需要复习np.reshape 功能。
    猜你喜欢
    • 2020-04-29
    • 2019-02-23
    • 1970-01-01
    • 2017-04-02
    • 1970-01-01
    • 2015-08-15
    • 2012-03-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多