【发布时间】:2019-01-23 22:24:59
【问题描述】:
我有一个数组:
a = array([[1,2,3,1], [2,5,3,1], [0,0,0,0], [5,3,2,5]])
我想根据每行中的最后一项(0 或 1)遍历数组。如果每行的最后一项为0,我想将该行中的其他3项(仅)更改为np.nan。
例如:
a = array([[1,2,3,1], [2,5,3,1], [nan, nan, nan, 0], [5,3,2,5]])
我可以使用 for 循环来做到这一点。即:
for frames in range(len(a)):
if a[frames][3] == 0:
a[frames][0:2] = np.nan
有没有更有效的方法来使用列表推导来做到这一点?到目前为止,这就是我想出的全部,但觉得它可能会更有效率:
a = np.array([[np.nan, np.nan, np.nan] if frames[3] == 0 else frames[0:3] for frames in a])
因为这将创建一个数组数组,并裁剪最后一列
提前致谢!
【问题讨论】:
-
顺便说一句
[np.nan, np.nan, np.nan] = [np.nan] * 3
标签: python arrays python-2.7 list-comprehension