Lee*_*e88 18 python arrays numpy list
import numpy as np
foo = [1, "hello", np.array([[1,2,3]]) ]
Run Code Online (Sandbox Code Playgroud)
我期待
foo.index( np.array([[1,2,3]]) )
Run Code Online (Sandbox Code Playgroud)
回来
2
Run Code Online (Sandbox Code Playgroud)
但我得到了
ValueError:具有多个元素的数组的真值是不明确的.使用a.any()或a.all()
什么比我目前的解决方案更好?这似乎效率低下.
def find_index_of_array(list, array):
for i in range(len(list)):
if np.all(list[i]==array):
return i
find_index_of_array(foo, np.array([[1,2,3]]) )
# 2
Run Code Online (Sandbox Code Playgroud)
mgi*_*son 12
这里出错的原因显然是因为numpy的ndarray覆盖==了返回数组而不是布尔值.
AFAIK,这里没有简单的解决方案.只要np.all(val == array)位工作,以下将工作.
next((i for i, val in enumerate(lst) if np.all(val == array)), -1)
Run Code Online (Sandbox Code Playgroud)
该位是否有效取决于数组中的其他元素是什么,以及它们是否可以与numpy数组进行比较.