首页 > 解决方案 > 在数据立方体中使用列表推导

问题描述

我目前正在尝试使用列表推导来过滤带有一些图像的数据立方体上的一些值,但是我迷失了从 2(如我们在此处此处看到的)到 3 维的跳跃。

对于单个图像,完成我想要的代码行是:

AM2 = [[x if x > 1e-5 else 0 for x in line] for line in AM[0]]

我如何以此来考虑堆叠在彼此顶部的不同图像?我假设我需要添加第三个嵌套循环,但到目前为止我所有的尝试都失败了。

在我的特殊情况下,数据立方体由尺寸为(100x400x900)的 numpy 数组组成。是否仍建议使用列表推导来过滤该数据量的值?

谢谢你的时间。

标签: pythonpython-3.xnumpy

解决方案


不要对 numpy 数组使用列表推导,你会失去它们的速度和力量。而是使用numpy 高级索引。例如,您的理解可以写成

AM2 = AM.copy() # USe AM2 = AM.copy()[0] if you just want the first row as in your example
AM2[AM2 < 1e-5] = 0

推荐阅读