对于 np.array 中的每个元素,找到具有相同元素值的最大索引 [关闭]

Posted

技术标签:

【中文标题】对于 np.array 中的每个元素,找到具有相同元素值的最大索引 [关闭]【英文标题】:for each element in np.array find the max index with the same value of the element [closed] 【发布时间】:2022-01-22 00:43:27 【问题描述】:

我有这个数组

x = [2 6 2 6 1 2 6 1]

x中的每个元素找到与数组中元素值相同的最大索引

x[:the index of the element]

它应该返回[- - 0 1 - 2 3 4]

如果没有这样的索引,用元素的相同索引填充它。

最终返回是[0 1 0 1 4 2 3 4]

不允许使用循环

【问题讨论】:

你对这个任务有什么问题? 【参考方案1】:

你的问题是numpy 的一个很好的小谜题。此解决方案不适用于数组中小于 1 的值(我不知道这是否有意义)

import numpy as np

x = np.array([2, 6, 2, 6, 1, 2, 6, 1])

# Find all indices for the elements in the array except the selfindex
a = x * np.tri(len(x), k=-1) == x[:, None]
 
# [[False False False False False False False False]
#  [False False False False False False False False]
#  [ True False False False False False False False]
#  [False  True False False False False False False]
#  [False False False False False False False False]
#  [ True False  True False False False False False]
#  [False  True False  True False False False False]
#  [False False False False  True False False False]]

# choose the last index (right side argmax) if the row contains any index else the selfindex
np.where(a.any(1), a.cumsum(1).argmax(1), np.arange(len(x)))

输出

array([0, 1, 0, 1, 4, 2, 3, 4])

【讨论】:

以上是关于对于 np.array 中的每个元素,找到具有相同元素值的最大索引 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

numpy中的线性代数

在 1D NumPy 数组中查找值的索引/位置(具有相同的值)[重复]

如何将numpy数组中的相同元素移动到子数组中

在numpy数组中找到第n个最小的元素[重复]

import numpy as np是啥意思

Python错误为不同循环设置具有序列的数组元素[重复]