我有一个矩阵
a = [[1,2,-3,1],
[-1,0,0,1],
[1,1,1,1]]
我想修改它,使得结果只包含正数的列。
a = [[2, 1],
[0, 1],
[1, 1]]
def removing_missing_data(x):
"""
input: lists of lists.
return: non-negative values.
"""
for i in x:
f = []
for k in i:
if k < 0:
f.append(i.index(k))
t(f,x)
def t(x,y):
count = 0
for i in x:
i = i - count
for l in y:
l.pop(i)
count+=1
上面的代码可以工作,但是当矩阵太大时,它的处理效率不高。我想知道是否有任何方法可以解决此问题以优化运行时间,以便可以在大型数据集上使用。
答案 0 :(得分:1)
您可以在每列中找到最小项目,然后过滤正项目。 numpy可以很容易地完成:
>>> import numpy as np
>>> a = [[1,2,-3,1],
... [-1,0,0,1],
... [1,1,1,1]]
>>> b = np.array(a)
>>> b[:,(b.min(axis=0)>=0)]
array([[2, 1],
[0, 1],
[1, 1]])