我有一个名为x
[array([ -1.5768, 10.843 , 2.5462, -2.9362, 0. ]),
array([-0.38214, 8.3909 , 2.1624 , -3.7405 , 0. ]),
array([-0.24811, -0.17797, 4.9068 , 0.15429, 0. ]),
array([-0.96511, 9.4111 , 1.7305 , -4.8629 , 0. ]),
array([-1.6162 , 0.80908, 8.1628 , 0.60817, 0. ])]
我想检查每行的第一列是否大于> 0。 ([-1.5768,-0.38214,.....)]
如果所有行符合此条件,我想返回"是" 否则我想要回复一个" no"。
我能够返回"是"或"不"对于每一行(所以输出将是许多yeses或noes但我只是希望输出是一个是或否。
for row in x:
if row[0] > 0:
print ('yes')
else: print('no')
答案 0 :(得分:3)
在python中,您可以在all()
函数中使用生成器表达式:
In [7]: arr = [[ -1.5768, 10.843 , 2.5462, -2.9362, 0. ],
...: [-0.38214, 8.3909 , 2.1624 , -3.7405 , 0. ],
...: [-0.24811, -0.17797, 4.9068 , 0.15429, 0. ],
...: [-0.96511, 9.4111 , 1.7305 , -4.8629 , 0. ],
...: [-1.6162 , 0.80908, 8.1628 , 0.60817, 0. ]]
In [8]:
In [8]: all(i[0] > 0 for i in arr)
Out[8]: False
In [9]: all(i[0] < 0 for i in arr)
Out[9]: True
在numpy中你可以通过简单的比较和array.all()
属性来实现:
In [11]: import numpy as np
In [12]: arr = np.array(arr)
In [14]: (arr[:, 0] > 0).all()
Out[14]: False
In [15]: (arr[:, 0] < 0).all()
Out[15]: True