我有一个矩阵,其中某些行的前导元素为NaN(每行前导NaN的数量可能不同)。在第一个非NaN元素之后,可以保证一行中的其他元素也都是非NaN。
示例:
A = np.array([[1,2,3],[np.nan,np.nan,1],[np.nan,1,2]])
我想移动每一行,以使它们在第一个非NaN元素的左侧对齐,如下所示:
B = np.array([[1,2,3],[1,np.nan,np.nan],[1,2,np.nan]])
然后我要执行一些操作(取决于行中的相对索引),例如:
C = B*2
,然后再将行移回以再次向右对齐:
D = np.array([[2,4,6],[np.nan,np.nan,2],[np.nan,2,4]])
我可以想到一个幼稚的循环解决方案,该解决方案获取每行中第一个非NaN元素的位置,然后相应地按行执行移位,但是我想存在一个更优雅(可能更简单)的解决方案。我愿意使用pandas或numpy表示数据及其本机方法/任何第三者实用程序来对其进行操作。执行时间也不是主要问题。