通过第一个非NaN元素将矩阵的行向左/向右对齐

时间:2019-07-04 09:33:49

标签: python-3.x pandas numpy

我有一个矩阵,其中某些行的前导元素为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表示数据及其本机方法/任何第三者实用程序来对其进行操作。执行时间也不是主要问题。

0 个答案:

没有答案