我有以下数组:
# input
In [77]: arr = np.array([23, 45, 23, 0, 12, 45, 45])
# result
In [78]: res = np.zeros_like(arr)
现在,我要计算唯一元素的移动和,并将其存储在res
数组中。你知道吗
具体来说,res
数组应该是:
In [79]: res
Out[79]: array([1, 1, 2, 1, 1, 2, 3])
[23, 45, 23, 0, 12, 45, 45]
[1, 1, 2, 1, 1, 2, 3]
我们开始计算每个元素,如果元素重新出现,则增加计数,直到到达数组的末尾。此元素特定的计数应作为结果返回。你知道吗
我们应该如何使用NumPy内置函数来实现这一点?我试过使用numpy.bincount
,但结果不理想。你知道吗
不确定你会找到一个内置的,所以这里是一个自制使用argsort。你知道吗
例如:
解释人:
我们首先使用argsort进行排序,因为我们需要索引最终返回到原始顺序。这里有一个稳定的排序是很重要的,因此使用慢合并排序。你知道吗
一旦元素被分类运行计数将形成一个“锯齿”模式。创建这个的矢量化方法是观察锯齿的diff在新齿开始的地方和其他地方都有“跳跃”值。所以这就是我们要建造的。你知道吗
相关问题 更多 >
编程相关推荐