【发布时间】:2018-03-07 17:02:17
【问题描述】:
我在 python 中有两个 numpy 数组,特征数组(4D)和标签数组(1D)。特征数组包含 Nan 值。我想删除包含 Nan 值(在 features 数组中)及其相应标签的整行。 X 是特征数组,Y 是标签数组。 我在 python 中使用 isnan 函数作为
x=x[~np.any(np.isnan(x), axis=3)]
当我输入axis=1 时出现错误
IndexError: index 5 is out of bounds for axis 1 with size 5
当我按代码所示输入 3 时,代码运行时没有错误,当我检查输出数组时,它不再具有 Nan 值,但数组的前三个维度被折叠成二维数组。 任何帮助将不胜感激。 让我们说这一行:
[[[[ 1.70204959 1.52199801 1.90457233 ..., 1.93644699 1.88296615
2.19928936],[1.52334234 1.338273......Nan 2.23324432]]]].
如果该行包含非值,则应删除整行(不仅仅是 Nan 值),因此在此示例中我们应该保留:
[[[[ 1.70204959 1.52199801 1.90457233 ..., 1.93644699 1.88296615
2.19928936]]]]
仅限。被移除行的对应标签也会被移除。
【问题讨论】:
-
整行是什么意思?对我来说,行和列是 2D 数组中存在的概念,但我在 4D 数组中看不到它们。你有例子吗?
-
您需要更详细地解释在 4D 数组案例中删除一行是什么意思。一个示例案例可能会帮助您传达信息。
-
我认为,如果您使用 3D minimal 样本数据并向我们展示预期的输出,这将是有意义的。另外,请使用
edit链接将这些详细信息添加到问题中,而不是放入不可读的 cmets。 -
@dm5 请更新您的问题(通过使用 edit 链接)而不是在 cmets 中提供额外信息。
-
让我向您推荐一些可用于创建示例数据的方法:
x = np.random.rand(2,3,2,3),然后假设我们随机选择NaN:x[0,2,1,2] = np.nan。现在,如果你能告诉我们x和预期的输出,那可能有助于我们理解这个问题。