我有一个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)?
您有额外的轴和额外的尺寸:
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。) 如果要将一维矢量转换为二维数组然后转置,只需对其进行切片(或者,它们是相同的,可读性更高)。 一