type
status
date
slug
summary
tags
category
icon
password
在处理矩阵数据时,我们经常需要从一个大矩阵中随机选择部分行,或者将多个矩阵按行或列拼接在一起。本文将介绍如何在 MATLAB 和 Python 中实现以下操作:
- 从原始矩阵中随机选择部分行。
- 将随机选择的行和剩余的行存储到不同的矩阵中。
- 将两个具有相同列数的矩阵按行或列拼接起来。
一、MATLAB 实现
1. 随机选择行并拆分矩阵
假设我们有一个包含 n 行和 m 列的矩阵 original_matrix,我们需要随机选择 k 行,并将剩余的 n-k 行存储到另一个矩阵中。
示例代码:
解释:
1.randperm(n, k):生成一个从 1 到 n 的随机排列,并从中选择 k 个索引,表示我们随机选择的行。
2.original_matrix(indices, :):根据 indices 提取原矩阵中随机选择的行。
3.setdiff(1:n, indices):获取从 1:n 中去除 indices 后的剩余索引。
4.original_matrix(setdiff(1:n, indices), :):根据剩余的索引提取矩阵的剩余行。
在此代码中,random_rows 变量包含了随机选择的行,remaining_rows 变量包含了剩余的行。
2. 拼接矩阵
假设我们有两个矩阵 matrix1 和 matrix2,它们具有相同的列数。我们希望将它们按行拼接起来。
解释:vertcat(matrix1, matrix2):将 matrix1 和 matrix2 按行拼接成一个新的矩阵,结果是一个四行三列的矩阵。
如果你需要按列拼接矩阵,可以使用 horzcat 函数:
二、Python 实现
1. 随机选择行并拆分矩阵
在 Python 中,我们可以使用 NumPy 库来实现类似的操作。假设我们有一个形状为 (n, m) 的 NumPy 数组 original_matrix,我们需要随机选择 k 行,并将剩余的行存储到另一个数组中。
其中:
1.np.random.choice(n, k, replace=False):从 n 行中随机选择 k 行的索引,replace=False 表示不重复选择。
2.original_matrix[indices, :]:根据索引提取原矩阵中随机选择的行。
3.np.delete(original_matrix, indices, axis=0):删除 original_matrix 中已经选择的行,axis=0 表示删除行。
此时,random_rows 数组包含了随机选择的行,remaining_rows 数组包含了剩余的行。
2. 拼接矩阵
在 Python 中,NumPy 提供了 np.concatenate 函数来按行或列拼接矩阵。
其中:
np.concatenate((matrix1, matrix2), axis=0):按行拼接 matrix1 和 matrix2,axis=0 表示按行拼接。
如果你需要按列拼接矩阵,可以使用 axis=1:
总结
本文介绍了如何在 MATLAB 和 Python 中实现以下操作:
- 从原始矩阵中随机选择部分行,并将剩余的行存储到另一个矩阵中。
- 将两个具有相同列数的矩阵按行或列拼接起来。
- 作者:Yinqi Yang
- 链接:https://yangyinqi.top/article/matlab-tech
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。