python-3.x - 通过第一个非 NaN 元素将矩阵的行向左/向右对齐
问题描述
我有一个矩阵,其中某些行的前导元素是 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 来表示数据及其本机方法/任何 3rd 方实用程序来操作它。执行时间也不是主要问题。
解决方案
推荐阅读
- php - 处理开放且格式正确的 PHP 循环
- pointers - 为什么 C++/WinRT IDL 文件不允许我使用指针作为参数定义方法?
- node.js - 在 Node.js 中使用 AWS SES 在电子邮件正文中发送超链接
- ffmpeg - FFMPEG - 添加一个 nullsrc 会导致我的脚本报告“1000 个重复帧”
- html - 将 data-id 属性添加到 bootstrap popover 元素内的链接
- android - SearchQueryListener 不返回任何结果
- javascript - 没有使用 React-Redux 传递给孩子的道具
- javascript - 在 JavaScript 中通过函数传递变量 - 我对变量和范围的理解
- c++ - opengl- VAO 是否也存储纹理单元调用
- python - 连接 QML 和 Python,其中通过单击按钮将文本发送到 python 函数,结果以 QML 打印