数据处理,矩阵怎么保留满足指定条件的行?

有一个矩阵(行数很多),我们希望能够保留出第一列等于某些数(这些数明确知道,但数量较多,能够组成一个长度较长list)的行,并按照原来的行顺序生成新的矩阵,如何用python或matlab实现?考虑到矩阵的行数很多,多个循环嵌套的方法代码运行时间很长,如何尽量不要让运行时间太长,有没有哪些函数

malab:复杂度O(N)
假设Data[N][N]为要操作的矩阵,某些数为a和b(举例),新矩阵为M[N][N]
count=0;
for i=1:1:N
if (Data[i,1]==a)|(Data[i,1]==b) {//判断条件可修改
count++;
M[count,:]=Data[i,:];%%存储该行
}
end