0

我有一个名为向量的 50 个 numpy 数组的列表:

[array([0.1, 0.8, 0.03, 1.5], dtype=float32), array([1.2, 0.3, 0.1], dtype=float32), .......]

我还有一个包含 10 个 numpy 数组的较小列表(均值),所有这些都来自上面的较大列表。我想遍历 mean 中的每个数组找到它在vectors中的位置。

所以当我这样做时:

for c in means:
        print(vectors.index(c))

我得到错误:

ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

我已经经历了各种 SO 问题,我知道为什么会出现这个错误,但我找不到解决方案。有什么帮助吗?

谢谢!

4

1 回答 1

1

一种可能的解决方案是转换为列表。

vectors = np.array([[1, 2, 3], [4, 5, 6], [7,8,9], [10,11,12]], np.int32)

print vectors.tolist().index([1,2,3])

这将返回 index 0,因为[1,2,3]可以在 index 0ofvectors

上面的例子是一个二维 Numpy 数组,但是你似乎有一个 numpy 数组列表,

所以我会以这种方式将其转换为列表列表:

vectors = [arr.tolist() for arr in vectors]

对手段做同样的事情:

means = [arr.tolist() for arr in means]

现在我们正在处理两个列表列表:

所以你原来的'for循环'将起作用:

for c in means:
    print(vectors.index(c))
于 2017-07-18T17:00:31.507 回答