【发布时间】:2019-07-10 16:55:43
【问题描述】:
我不知道这是否简单,或者之前是否有人问过。 (我搜索了但没有找到正确的方法。我找到了numpy.argmax和numpy.amax但我无法正确使用它们。)
我有一个 numpy 数组(它是一个CxKxN 矩阵)如下(C=K=N=3):
array([[[1, 2, 3],
[2, 1, 4],
[4, 3, 3]],
[[2, 1, 1],
[1, 3, 1],
[3, 4, 2]],
[[5, 2, 1],
[3, 3, 3],
[4, 1, 2]]])
我想找到每行中最大元素的索引。一行是每个矩阵的三行 (C) 的串联。换句话说,i-th 行是第一个矩阵中的i-th 行、第二个矩阵中的i-th 行...的串联,直到i-th C-th 矩阵中的行。
比如第一行是
[1, 2, 3, 2, 1, 1, 5, 2, 1]
所以我想退货
[2, 0, 0] # the index of the maximum in the first line
和
[0, 1, 2] # the index of the maximum in the second line
和
[0, 2, 0] # the index of the maximum in the third line
或
[1, 2, 1] # the index of the maximum in the third line
或
[2, 2, 0] # the index of the maximum in the third line
现在,我正在尝试这个
np.argmax(a[:,0,:], axis=None) # for the first line
它返回6 和
np.argmax(a[:,1,:], axis=None)
它返回2 和
np.argmax(a[:,2,:], axis=None)
它返回0
但我可以将这些数字转换为 6 = (2,0,0) 等索引。
【问题讨论】:
-
您想要的输出与实际不符。第二行是
[2, 1, 4], [1, 3, 1], [3, 3, 3]。那你怎么得到[0, 1, 2]呢?这同样适用于所有其他 4 行。不清楚第二行是什么?你如何构建它?你总共有多少行?只有3个?你必须首先澄清所有这些问题。如果您将所有三个数组的第一行连接到一行,将所有三个数组的第二行连接到第二行,并将所有子数组的所有第三行连接到第三行,那么您总共只有三行。那你怎么得到 6 行呢? -
[0,1,2]因为4在第一个3x3矩阵中,所以它在这个矩阵的第二行,它在这个矩阵的第三列。i-th 行是第一个矩阵中的i-th 行、第二个矩阵中的i-th 行 ...,直到i-th 行的串联987654354@-th 矩阵。 -
4有多个条目是什么? -
是的,我只有三行,我只是打印了领带(在第三行)。
-
如果有平局,我可以任意选择任何一个。