Matlab:合并分类数组

这篇博客展示了如何在Matlab中合并和操作分类数组。从创建分类数组开始,涉及串联相同和不同类别的数组,处理不同类别的数组,并使用`reordercats`调整类别顺序。此外,还介绍了如何使用`union`找到分类数组的并集。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

此示例演示了如何合并两个分类数组。

创建分类数组

创建分类数组 A,其中包含教室 A 中的 25 个学生的首选午餐饮料。

rng('default')
A = randi(3,[25,1]);
A = categorical(A,1:3,{'milk' 'water' 'juice'});

A 是一个 25×1 的分类数组,包含三个不同的类别:milk、water 和 juice。

汇总分类数组 A。

summary(A)
 milk        6 
 water       5 
 juice      14 

教室 A 中的六个学生喜欢牛奶,五个学生喜欢水,十四个学生喜欢果汁。

创建另外一个分类数组 B,其中包含教室 B 中的 28 个学生的首选饮料。

B = randi(3,[28,1]);
B = categorical(B,1:3,{'milk' 'water' 'juice'});

B 是一个 28×1 的分类数组,包含与 A 相同的类别。

汇总分类数组 B。

summary(B)
 milk        9 
 water       8 
 juice      11 

教室 B 中的九个学生喜欢牛奶,八个学生喜欢水,七个学生喜欢果汁。

串联分类数组

将教室 A 和 B 中的数据串联为一个单独的分类数组 Group1。

Group1 = [A;B];

汇总分类数组 Group1。

summary(Group1)
 milk       15 
 water      13 
 juice      25 

Group1 是一个包含以下三个类别的 53×1 分类数组:milk、water 和 juice。

创建具有不同类别的分类数组

创建一个分类数组 Group2,其中包含为其提供了额外的苏打饮料选择的 50 个学生的数据。

Group2 = randi(4,[50,1]);
Group2 = categorical(Group2,1:4,{'juice' 'milk' 'soda' 'water'});

汇总分类数组 Group2。

summary(Group2)
 juice      12 
 milk       14 
 soda       10 
 water      14 

Group2 是一个包含以下四个类别的 50×1 分类数组:juice、milk、soda 和 water。

串联具有不同类别的数组

串联 Group1 和 Group2 中的数据。

students = [Group1;Group2];

汇总生成的分类数组 students。

summary(students)
 milk       29 
 water      27 
 juice      37 
 soda       10 

串联操作会将第二个输入所独有的类别 soda 追加到第一个输入的类别列表的末尾:milk、water、juice、soda。

使用 reordercats 更改分类数组 students 中的类别顺序。

students = reordercats(students,{'juice','milk','water','soda'});

categories(students)

ans = 4x1 cell
{‘juice’}
{‘milk’ }
{‘water’}
{‘soda’ }

分类数组的并集

使用函数 union 可查找 Group1 和 Group2 中的唯一响应。

C = union(Group1,Group2)

C = 4x1 categorical
milk
water
juice
soda

union 返回 Group1 和 Group2 的合并值并且没有重复项。在本例中,C 等效于串联的类别 students。

此示例中的所有分类数组都不是有序的。要合并有序分类数组,它们必须具有相同的类别集合,包括其顺序。

该博文为原创文章,未经博主同意不得转。
本文章博客地址:https://cplusplus.blog.csdn.net/article/details/127998014

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

源代码大师

赏点狗粮吧

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值