朱莉娅。重新标记矢量

时间:2014-07-11 16:00:58

标签: vector indexing wolfram-mathematica julia

我有一个非连续整数的向量,我需要将其用作矩阵的索引。为了创建最小尺寸的矩阵,我想以下列方式重新标记向量的条目:

input = [794, 421, 496, 158, 421, 794, 794, 656, 108, 496, 496, 687, 108, 511, 108, 108, 158, 687, 158, 687]
output = [1, 2, 3, 4, 2, 1, 1, 5, 6, 3, 3, 7, 6, 8, 6, 6, 4, 7, 4, 7]

以下是我在Mathematica中如何做到这一点的一个例子:

labels = DeleteDuplicates[input]
output = Flatten[Position[labels, #] & /@ input]

在朱莉娅这样做的有效方法是什么?

谢谢, 柯岩

1 个答案:

答案 0 :(得分:2)

解决方案是

relabel(v::Vector{Int64}) = indexin(v, unique(v))