如何高效地将一个id向量替换为对应的数字值向量

3
假设有一个id向量(或矩阵)
>  1 2 3 3 2

假设每个id都对应于另一个向量中存储的数值。我想用相应的值替换这些id,以构建以下向量:14 33 25 25 33。必须有一种简单的方法可以实现这一点,而不需要使用循环,但是我目前无法想到,也没有在文档中找到任何信息。你有什么想法吗?
2个回答

8
假设:
x = [14 33 25]

ind = [1 2 3 3 2]

那么

x(ind) = 14 33 25 25 33

谢谢!我知道这一定很简单。你知道在文档的哪里可以找到这个吗?或者Matlab如何调用那个方法? - Kena
3
@Kena:这属于Matlab数组索引和操作的一般主题。请参阅“help paren”以获得相关参考文档,以及“help punct”以获取相关运算符。在MATLAB>入门>矩阵和数组中有在线文档介绍此内容。“doc ismember”和“doc find”页面介绍了一些相关的索引用法,可能有助于理解此内容。 - Andrew Janke

0

值得一提的是,它也适用于Python+Numpy:

x = array([14,33,25])
ind = [0,1,2,2,1]
x[ind] # -> array([14, 33, 25, 25, 33])

这是不正确的,因为在Matlab中索引从1开始,而不是从0开始。 - Nathan Fellman

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接