Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 检查列表(numpy数组)中的所有项是否相等_Python_Arrays_Numpy_If Statement_Equality - Fatal编程技术网

Python 检查列表(numpy数组)中的所有项是否相等

Python 检查列表(numpy数组)中的所有项是否相等,python,arrays,numpy,if-statement,equality,Python,Arrays,Numpy,If Statement,Equality,我的程序中有一个函数,需要检查并确保列表中的所有项(都是numpy数组)相等。执行此操作的if语句以开头 if np.array_equal(qstatnum[gatnum].count(qstatnum[gatnum][0]), len(qstatnum[gatnum])) == True: 这一行给出了错误 ValueError: The truth value of an array with more than one element is ambiguous. Use a.any()

我的程序中有一个函数,需要检查并确保列表中的所有项(都是numpy数组)相等。执行此操作的if语句以开头

if np.array_equal(qstatnum[gatnum].count(qstatnum[gatnum][0]), len(qstatnum[gatnum])) == True:
这一行给出了错误

ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
我不确定是什么问题。任何帮助都将不胜感激。谢谢


编辑: 每个请求,代码中完整的if-else语句

if np.array_equal(qstatnum[gatnum].count(qstatnum[gatnum][0]), len(qstatnum[gatnum])) == True:
    if np.array_equal(qstatnum[gatnum][0], [0,1]) == True:
        return qstat
    elif np.array_equal(qstatnum[gatnum][0], [1,0]) == True:
        return singates[typegat2](qstat)
    else:
        print("superposition not yet implemented")
else:
    return qstat

很抱歉没有包括在内,我们试图使问题尽可能小。

您似乎没有正确使用
array_equal
array_equal
的输入必须是数组,而您似乎正在传递某个东西的
len
,这是一个数字

如果
l1
l2
是您的两个数组列表,那么您可能正在查找以下内容:

if all(np.array_equal(i, j) for i, j in zip(l1, l2)):
    # Do something
比如说,

>>> l1 = [np.arange(3), np.arange(5)]
>>> l2 = [np.r_[0:3], np.r_[0:5]]
>>> if all(np.array_equal(i, j) for i, j in zip(l1, l2)):
...     print('yes')
...     
yes
编辑

如果试图显示列表中的所有数组彼此相等,则可以显示所有数组都等于第一个数组:

l = [np.arange(3), np.arange(3), np.arange(3)]
if all(np.array_equal(i, l[0]) for i in l[1:]):
    print('All equal!')

您似乎没有正确使用
array_equal
array_equal
的输入必须是数组,而您似乎正在传递某个东西的
len
,这是一个数字

如果
l1
l2
是您的两个数组列表,那么您可能正在查找以下内容:

if all(np.array_equal(i, j) for i, j in zip(l1, l2)):
    # Do something
比如说,

>>> l1 = [np.arange(3), np.arange(5)]
>>> l2 = [np.r_[0:3], np.r_[0:5]]
>>> if all(np.array_equal(i, j) for i, j in zip(l1, l2)):
...     print('yes')
...     
yes
编辑

如果试图显示列表中的所有数组彼此相等,则可以显示所有数组都等于第一个数组:

l = [np.arange(3), np.arange(3), np.arange(3)]
if all(np.array_equal(i, l[0]) for i in l[1:]):
    print('All equal!')

不幸的是,我没有numpy,但下面是我如何检查列表中所有项目是否相等的方法

for i in range(len(arr)):
for j in range(i+1, len(arr)):
    if arr[i] != arr[j]:
        print ("items are not all equal");

希望有帮助

不幸的是,我没有numpy,但下面是如何检查列表中的所有项是否相等

for i in range(len(arr)):
for j in range(i+1, len(arr)):
    if arr[i] != arr[j]:
        print ("items are not all equal");

希望有帮助

正如@Praveen已经提到的,看起来您只想比较两个数字!如果是这种情况,则不需要使用
numpy.array_equal()

由于您没有提供代码,我无法解释为什么会出现此错误。但我在这里分享一个简单的例子,让你知道错误的含义

例如:

x = np.arange(0, 2, 0.5)
print(x) # [ 0.   0.5  1.   1.5]
y = 2*x
print(y) # [ 0.  1.  2.  3.]

if y <= 1.0:
    print ("ok") 
如果打印布尔表达式的值:

print(y<=1.0)
因此,如下更新
if
条件可以使程序工作

if np.all(y <= 1.0):
    print ("ok")

正如@Praveen已经提到的,看起来您只想比较两个数字!如果是这种情况,则不需要使用
numpy.array_equal()

由于您没有提供代码,我无法解释为什么会出现此错误。但我在这里分享一个简单的例子,让你知道错误的含义

例如:

x = np.arange(0, 2, 0.5)
print(x) # [ 0.   0.5  1.   1.5]
y = 2*x
print(y) # [ 0.  1.  2.  3.]

if y <= 1.0:
    print ("ok") 
如果打印布尔表达式的值:

print(y<=1.0)
因此,如下更新
if
条件可以使程序工作

if np.all(y <= 1.0):
    print ("ok")

不幸的是,这不能回答OP的问题!!不幸的是,这不能回答OP的问题!!你能分享更多你的代码吗?@WasiAhmad,请看编辑。为什么会有反对票(我如何改进这个问题)?@heather你是想表明列表中的所有数组都是相等的吗?或者您是在试图证明两个列表中的所有数组都是相等的?
len()
试图达到什么目的?@Praveen,
len()
是个相当糟糕的主意,因为我从另一个SO答案中提取了它,而不知道发生了什么,但它做广告表明列表中的所有项都是相等的。我试图表明列表中的所有数组都是相等的。你能分享更多的代码吗?@WasiAhmad,请参阅编辑。为什么会有反对票(我如何改进这个问题)?@heather你想表明列表中的所有数组都是相等的吗?或者您是在试图证明两个列表中的所有数组都是相等的?
len()
试图达到什么目的?@Praveen,
len()
是个相当糟糕的主意,因为我从另一个SO答案中提取了它,而不知道发生了什么,但它做广告表明列表中的所有项都是相等的。我试图证明列表中的所有数组都是相等的。谢谢你的回答,它消除了我的一些误解。我接受了@Praveen's,因为它明确回答了我的问题,但你的回答也帮助了我。再次感谢大家,+谢谢你的回答,它消除了我的一些误解。我接受了@Praveen's,因为它明确回答了我的问题,但你的回答也帮助了我。再次感谢大家,+1.