Python 3.x numpy.where-计算True语句,即使条件为False
我有两个变量,分别为零Python 3.x numpy.where-计算True语句,即使条件为False,python-3.x,numpy,Python 3.x,Numpy,我有两个变量,分别为零s1=0和s2=0,还有一个数据帧(有更多列,但与本例无关): 我尝试使用np创建一个新列。其中: df['c'] = np.where((df['xyz']>0) & (s1 > 0) & (s2 > 0), 1/s1, 0) 然而,这是一个错误。为什么它在计算True情况,即使条件是False。如何获得所需的结果?现在我了解了python函数在执行之前会评估所有输入。但是在这种情况下,我如何得到想要的结果呢?1/s1总是对s1的每个元
s1=0
和s2=0
,还有一个数据帧(有更多列,但与本例无关):
我尝试使用np创建一个新列。其中
:
df['c'] = np.where((df['xyz']>0) & (s1 > 0) & (s2 > 0), 1/s1, 0)
然而,这是一个错误。为什么它在计算
True
情况,即使条件是False
。如何获得所需的结果?现在我了解了python函数在执行之前会评估所有输入。但是在这种情况下,我如何得到想要的结果呢?1/s1
总是对s1
的每个元素进行计算<代码>np。其中然后检查条件并查找相应的值。您可以使用1/np.divide(1,s1,其中=s1>0)
@QuangHoang,在ufunc
中使用where
时,如divide
,您还应该提供out
参数。否则,not where值将是不可预测的。@hpaulj谢谢,很高兴知道,不过在这种情况下,not where并不是那么重要。
df['c'] = np.where((df['xyz']>0) & (s1 > 0) & (s2 > 0), 1/s1, 0)