当前位置: 首页 > 知识库问答 >
问题:

在Numpy数组的第3维上使用Numpy armmax[重复]

凤衡
2023-03-14

我有一个3d numpy数组的形状(150,9,5),我想得到第三维的argmax(从元素中),但我无法完成。例如,假设数组如下所示(此示例不遵循我在代码中使用的形状):

[[[615, 142, 18]],

   [[12, 412, 98]],

   [[5, 11, 162]],

   [[19, 76, 7]],

   [[56, 78, 12]],

   [[119, 41, 55]],

   [[26, 7, 15]],

   [[19, 67, 53]]]

我想得到一个形状数组(150,9,1)(这也是我的情况,与示例无关)。例如,它将是:

[[[0]],

   [[1]],

   [[2]],

   [[1]],

   [[1]],

   [[0]],

   [[0]],

   [[1]]]

当我用0轴和1轴尝试np.argmax()时,我得到了错误的结果。

有没有办法直接计算出来,或者我应该使用for循环遍历每个(9,5)?

共有1个答案

赵高韵
2023-03-14

您有额外的轴和额外的尺寸:

import numpy as np
a=np.array([[[615, 142, 18]],

   [[12, 412, 98]],

   [[5, 11, 162]],

   [[19, 76, 7]],

   [[56, 78, 12]],

   [[119, 41, 55]],

   [[26, 7, 15]],

   [[19, 67, 53]]])

a.argmax(axis=2)

输出:

Out[82]: 
array([[0],
       [1],
       [2],
       [1],
       [1],
       [0],
       [0],
       [1]], dtype=int64)
 类似资料:
  • 相关代码就是这一行 t和q都是多维数组,这样直接运行是报错的,但我想得到就是它们的线性相关性,请问各位大佬,怎么处理才能得到想要的结果?

  • 问题内容: 我要执行以下操作: 不使用循环。最后,A和B包含相同的信息,但索引不同。 我必须指出,尺寸1,2,3和4可以相同或不同。因此,numpy.reshape()似乎很困难。 问题答案: 请注意:Jaime的答案更好。NumPy正是为此目的而提供的。 在numpy中执行此操作的规范方法是使用的可选置换参数。在您的情况下,从i转到,排列是,例如: 或者使用np.einsum ; 这可能是其预期

  • 问题内容: 假设我有: 使我得到数组的 第i 行(例如)。如何访问第 ith 列?(例如)。另外,这将是一项昂贵的操作吗? 问题答案: 同样, 使您可以访问行。NumPy参考资料的第1.4节(索引)对此进行了介绍。这很快,至少以我的经验而言。它肯定比循环访问每个元素要快得多。

  • 问题内容: 我想通过指定2D数组中的列数将一维数组转换为二维数组。可能会像这样工作: numpy是否具有与我的虚构函数“ vec2matrix”相似的功能?(我知道您可以像2D数组一样索引1D数组,但这不是我拥有的代码中的选项- 我需要进行此转换。) 问题答案: 您要阵列。 其中,根据输入数组的大小推断新维的大小。

  • 我刚接触Python。当我试图将一个2维数组插入到一个3D数组中时,我得到了这样一个错误: 下面是我的代码: 目的是创建一个队列,其中的表[0]总是最新的元素(一个2D数组),而最旧的元素将弹出。 谁知道我怎么解决这个?多谢!

  • 问题内容: 我使用Python和NumPy,“移调”有一些问题: 调用不转置数组。例如,如果为,则它正确转置,但我需要的转置。 问题答案: 它的工作完全符合预期。一 维 数组的转置仍然是 一维 数组!(如果您习惯使用matlab,从根本上来说就没有1D数组的概念。Matlab的“ 1D”数组是2D。) 如果要将一维矢量转换为二维数组然后转置,只需对其进行切片(或者,它们是相同的,可读性更高)。 一