remove zero lines 2-D numpy array

前端 未结 3 1984
旧时难觅i
旧时难觅i 2020-12-01 04:07

I run a qr factorization in numpy which returns a list of ndarrays, namely Qand R:

>>&         


        
3条回答
  •  刺人心
    刺人心 (楼主)
    2020-12-01 04:59

    Because the data are not equal zero exactly, we need set a threshold value for zero such as 1e-6, use numpy.all with axis=1 to check the rows are zeros or not. Use numpy.where and numpy.diff to get the split positions, and call numpy.split to split the array into a list of arrays.

    import numpy as np
    [q,r] = np.linalg.qr(np.array([1,0,0,0,1,1,1,1,1]).reshape(3,3))
    mask = np.all(np.abs(r) < 1e-6, axis=1)
    pos = np.where(np.diff(mask))[0] + 1
    result = np.split(r, pos)
    

提交回复
热议问题