根据列值修改矩阵

时间:2015-12-01 01:13:45

标签: python matrix

我有一个矩阵

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

上面的代码可以工作,但是当矩阵太大时,它的处理效率不高。我想知道是否有任何方法可以解决此问题以优化运行时间,以便可以在大型数据集上使用。

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]])