如何获取数组中非零项目的索引并使用此索引从另一个数组或列表中获取另一个值

时间:2020-06-09 06:38:43

标签: python arrays python-3.x indexing typeerror

我有一个项目,您必须在数组中选择一个非零项目并获取其索引。使用此索引,您必须在另一个数组或列表中找到其对应的值。

例如:

best_chr = [[1 1 0]] # numpy array
activity = [2, 3, 4]

代码如下:

chosen_act = [activity[item] for item in range(len(best_chr)) if item != 0]
print(chosen_act)

我打算做的是在index中找到non-zero项/值的best_chr [对于上面的示例,为1,1]。然后,使用该索引在activity中找到其对应的值。

Expected output:
chosen_act = [2, 3]

问题是,使用上面的代码,我收到以下错误:

TypeError: object of type 'numpy.int32' has no len()

任何帮助将不胜感激!谢谢!

1 个答案:

答案 0 :(得分:2)

您可以只使用zip

# best_chr.flatten since it looks like 2-d array
[i for i, j in zip(activity, best_chr.flatten()) if j]

如果您需要使用索引,请使用numpy.flatnonzero

[activity[i] for i in np.flatnonzero(best_chr)]

输出:

[2, 3]