37,720
社区成员
发帖
与我相关
我的任务
分享
def checkMat(aMat)
bMat = [] #这是matlab中的定义方式
for i in range(aMat.shape[1]):
if aMat[i,] == ... #满足一条件
bMat = concatenate((bMat,aMat[i,]))
return bMat
In [279]: def checkMat(aMat):
...: bMat = []
...: for row in aMat:
...: if sum(row) > 0:
...: bMat.append(row)
...: return bMat
In [280]: aMat = [[0, 1, 0], [1, -2, 0], [0, 0, 0]]
In [281]: checkMat(aMat)
Out[281]: [[0, 1, 0]]
更方便的是用list comprehension:
In [282]: [row for row in aMat if sum(row) > 0]
Out[282]: [[0, 1, 0]]
如果你希望按列取的话, numpy应该支持按列取或增加一列. 如果你是做数值计算的话,建议使用numpy.
如果是简单的应用,不想依赖于numpy,可以先把矩阵转置,对行处理,再转置回去.
In [283]: def checkColumn(aMat):
...: tranpose = zip(*aMat)
...: bMat = [row for row in tranpose if sum(row)>0]
...: return zip(*bMat)
In [284]: checkColumn(aMat)
Out[284]: [(0,), (1,), (0,)]
写在一行也不算长(可读性如何就见仁见智了):
In [285]: zip(*(row for row in zip(*aMat) if sum(row) > 0))
Out[285]: [(0,), (1,), (0,)]