我试图测试包含标量元组和np.array的列表/元组中的成员身份。它适用于正则数组,但不适用于np数组。下面的第一个print语句打印“True”,第二个语句引发ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
huge = [(5.0, [[ 3., -1.],
[-1., 2.]], [ 7., 5.]), (2.0, [[ 2., 1.],
[ 1., 1.]]), [-2., 5.], (2.0, [[ 1., 0.],
[ 0., 2.]], [ 0., 1.]), (1.0,[[ 0.2, 0.1],
[ 0.1, 1. ]], [-3., 4.])]
lil = (2.0,[[ 1., 0.],
[ 0., 2.]],[ 0., 1.])
nphuge = [(5.0, np.array([[ 3., -1.],
[-1., 2.]]), np.array([ 7., 5.])), (2.0, np.array([[ 2., 1.],
[ 1., 1.]]), np.array([-2., 5.])), (2.0, np.array([[ 1., 0.],
[ 0., 2.]]), np.array([ 0., 1.])), (1.0, np.array([[ 0.2, 0.1],
[ 0.1, 1. ]]), np.array([-3., 4.]))]
nplil = (2.0, np.array([[ 1., 0.],
[ 0., 2.]]), np.array([ 0., 1.]))
print lil in huge #Prints "True"
print nplil in nphuge #Raises ValueError
我可以通过手动将每个元组的成员转换为常规列表而不是np.array来解决这个问题:
nplil_work_around = nplil[0],nplil[1].tolist(),nplil[2].tolist()
nphuge_work_around = [(x[0],x[1].tolist(), x[2].tolist()) for x in nphuge]
print nplil_work_around in nphuge_work_around # prints True
有没有不转换np.array的方法
您可以使用:
循序渐进:
相关问题 更多 >
编程相关推荐