【发布时间】:2014-07-14 16:05:43
【问题描述】:
我有一个非连续整数向量,我需要将其用作矩阵的索引。为了创建一个最小尺寸的矩阵,我想通过以下方式重新标记向量的条目:
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]
在 Julia 中执行此操作的有效方法是什么?
谢谢, 柯岩
【问题讨论】:
-
刚刚找到了解决方案:relabel(v::Vector{Int64}) = findin(v, unique(v))。谢谢
-
实际上,findin 的错误/错误描述使此解决方案暂时出现问题。请改用
indexin。 -
由于您自己找到了答案,因此您可以自定义添加答案。 meta.stackexchange.com/questions/17845/…
-
感谢您的提前,您是正确的。 findin 是一个错误
标签: vector indexing wolfram-mathematica julia