我有一个由Nbin列表组成的表(命名表),每个列都包含Nbin元素。其中一些元素是(长)数组,所有其他元素都是单个0。 然后我做了这个简短的代码:
a=1
b=1
Nbin=3
for a in range(1,Nbin+1):
for b in range(1,Nbin+1):
if np.all(table[a][b]!=0) and np.all(a = b):
s2=11
print a,'-',b,s2
elif np.all(table[a][b]!=0) and np.all(a != b):
s2=12
print a,'-',b,s2
基本上,我期望的输出(对于Nbin = 3)是:
1 - 1 11
1 - 2 12
1 - 3 12
2 - 2 11
2 - 3 12
3 - 3 11
但我得到的是:
1 - 1 11
1 - 2 11
1 - 3 11
2 - 2 11
2 - 3 11
3 - 3 11
我哪里做错了?
答案 0 :(得分:0)
问题是,正如评论所指出的那样,你的第一个条件包含一个赋值,而不是一个比较。 a = b
将a
的值设为b
,而您想要的是a == b
,表示这两个值是否相等。只要np.all(a = b)
不为0,b
将始终评估为真。
此外,对于此条件,您不需要np.all
。 a == b
和a != b
就足够了。
请注意,我不能保证您的代码现在可以按预期工作,因为您还没有说明table
的值是什么。