gpt4 book ai didi

python - NumPy 的错误? ( python 3)

转载 作者:太空狗 更新时间:2023-10-30 02:24:44 26 4
gpt4 key购买 nike

import numpy as np
mainList = []
numpyArray0 = np.array([1,2,3])
numpyArray1 = np.array([4,5,6])
mainList.append(numpyArray0)
mainList.append(numpyArray1)

print("numpyArray0 in mainList:")
try:
print(numpyArray0 in mainList)
except ValueError:
print("ValueError")

print("numpyArray1 in mainList:")
try:
print(numpyArray1 in mainList)
except ValueError:
print("ValueError")

print("mainList in numpyArray0:")
try:
print(mainList in numpyArray0)
except ValueError:
print("ValueError")

print("mainList in numpyArray1:")
try:
print(mainList in numpyArray1)
except ValueError:
print("ValueError")

print(numpyArray1 in mainList)

所以我有上面的代码,基本上它在普通的 python 列表 (mainList) 中创建了 2 个 numpy 数组,然后检查这 2 个数组是否在列表中。代码应输出:

numpyArray0 in mainList:
True
numpyArray1 in mainList:
**True**
mainList in numpyArray0:
True
mainList in numpyArray1:
True
**True**

但它没有输出上面的内容,而是输出以下内容:

numpyArray0 in mainList:
True
numpyArray1 in mainList:
ValueError
mainList in numpyArray0:
True
mainList in numpyArray1:
True
Traceback (most recent call last):
File "/home/user/Documents/pythonCode/temp.py", line 31, in <module>
print(numpyArray1 in mainList)
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

我做错了什么吗?请注意,我在运行代码之前尝试更新 python、numpy 和我的操作系统 (debian)。

最佳答案

mainList 中的 numpyArray0 调用 list.__contains__。列表的 __contains__ 方法为列表的每个元素调用 PyObject_RichCompareBool 以检查元素是否相等。碰巧,PyObject_RichCompareBool首先检查身份是否相等,然后进行全面比较。

numpyArray0 is mainList[0] 返回 True,因此永远不会进行完全比较。如果进行了全面比较,numpy 将引发 ValueError,因为 numpy 数组不能解释为 bool 值。

numpyArray1 in mainList 也显示了这一点(因为 numpyArray1mainList[0] 的身份比较失败。

关于python - NumPy 的错误? ( python 3),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51975995/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com