【发布时间】:2018-07-13 13:22:01
【问题描述】:
以下是我列表中1 项 的示例:
array([[ 1, 2, 3,
43, 83, 92],
[ 12, 54, 93,
23, 94, 83],
[ 23, inf, inf,
inf, inf, inf],
[ 83, 33, 33,
83, 13, 83],
[ 83, nan, 83,
73, 43, 43],
[ 43, 83, 93,
22, 83, 54],
[ 66, nan, 74,
84, 84, 75],
[ 74, 44, 65,
6, 9, 7],
[ 54, 9, 74,
754, 55, 74]])
其中一些项目包含inf 或nan 值。因此,我试图返回包含此类值的项目的索引。因此,我尝试执行以下操作:
for x in f:
if float('inf') in x:
idx.append(f.index(x))
elif float('nan') in x:
idx.append(f.index(x))
但是,当我运行我的脚本时,我收到以下错误:
idx.append(f.index(x))
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
这是为什么呢?我该如何解决这个问题?
作为提醒,以上示例仅为1 项。由于它包含inf 和nan,我想返回该项目的索引。该项目基本上是一个列表列表。
谢谢。
【问题讨论】:
-
此数据没有任何无穷大或 nans。您能否添加一个具有预期输出的样本?你可以使用
np.isfinite。 -
什么是 f?什么是 idx?如果我没记错的话,这个错误与 inf 或 nan 无关...stackoverflow.com/questions/12647471/…
-
@cᴏʟᴅsᴘᴇᴇᴅ 我对我的数据进行了编辑以显示示例
-
@Astrom "f" 是简单的包含数据的列表的名称,而 "idx" 是一个列表,我想在其中添加包含 "inf" 或 "nan" 的项目的索引
-
接受的答案不是很好,因为您根本不需要列表理解。您可以 100% 将其矢量化。但是,如果您不显示预期的输出,我无法写答案。
标签: python list numpy indexing