有没有一种简单的(理想情况下没有多个for循环)的方式来根据Matlab中的一组类别对值向量进行分组?Matlab将柱状数据转换为ndarray
我有数据矩阵形式
CATEG_A CATEG_B CATEG_C ... VALUE
1 1 1 ... 0.64
1 2 1 ... 0.86
1 1 1 ... 0.74
1 1 2 ... 0.56
...
等
和我想是一个N维阵列
all_VALUE(CATEG_A, CATEG_B, CATEG_C, ..., index) = VALUE_i
当然可以有任何数量的值使用相同的类别组合,因此size(end)
将是最大类别中的值的数量 - 其余项目将填充nan
。
备选地我很高兴与
all_VALUE { CATEG_A, CATEG_B, CATEG_C, ... } (index)
即矢量的一个单元阵列。我想这有点像创建一个数据透视表,但有n维,而不是计算mean
。
我发现这个功能在帮助
A = accumarray(subs,val,[],@(x) {x})
,但我无法捉摸如何使它做我想要的东西!
不错,我起初试过这个,但是被每个标签部分的累计计数卡住了。 @SanjayManohar这可能是更好的解决方案... – Dan 2015-02-11 15:54:38
@丹谢谢。您的解决方案实际上在内存方面效率更高,因为它提供了单元阵列而不是N-D阵列 – 2015-02-11 15:58:58
Perfect。还要感谢我介绍“unique”的第三个输出。 'ind'最终告诉每个项目“去哪里”,这真是可爱。 – 2015-02-11 16:01:25