python使用多个条件和numpy where
我有一个巨大的数组,名为AllDays,用于存储日期时间 我生成了一个数组,用于存储每天的星期信息 我正在尝试仅从原始datetime数组AllDays中提取周末 因此,从一周中的某一天起,我将尝试以下方法:python使用多个条件和numpy where,python,datetime,numpy,Python,Datetime,Numpy,我有一个巨大的数组,名为AllDays,用于存储日期时间 我生成了一个数组,用于存储每天的星期信息 我正在尝试仅从原始datetime数组AllDays中提取周末 因此,从一周中的某一天起,我将尝试以下方法: DayOfWeek = np.asarray([x.weekday() for x in AllDays]) #AllDays stores datetime objects ind = np.where(DayOfWeek == 0 or DayOfWeek == 6) #gives E
DayOfWeek = np.asarray([x.weekday() for x in AllDays])
#AllDays stores datetime objects
ind = np.where(DayOfWeek == 0 or DayOfWeek == 6) #gives Error
我的目标是按如下方式使用它来提取周末:
weekends = AllDays[ind]
线路错误
ind = np.where(DayOfWeek == 0 or DayOfWeek == 6)
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
这里的问题是没有为numpy布尔数组定义的“or”。您可以只使用总和:
np.where((DayOfWeek == 0) + (DayOfWeek == 6))
编辑:也可以使用按位or运算符:
np.where((DayOfWeek == 0) | (DayOfWeek == 6))
这给出了相同的结果,但在处理布尔型时效果更好…这里的问题是没有为numpy布尔型数组定义的“or”。您可以只使用总和:
np.where((DayOfWeek == 0) + (DayOfWeek == 6))
编辑:也可以使用按位or运算符:
np.where((DayOfWeek == 0) | (DayOfWeek == 6))
它给出了相同的结果,但在处理布尔函数时效果更好。元素的OR运算符是
|
<代码>np.where((DayOfWeek==0)|(DayOfWeek==6))是的,那就更好了。谢谢因为就逻辑而言,true+true=true并没有真正意义。在实现中,它同样有效。()
同样重要。您希望首先计算=
。元素的OR运算符是|
<代码>np.where((DayOfWeek==0)|(DayOfWeek==6))是的,那就更好了。谢谢因为就逻辑而言,true+true=true并没有真正意义。在实现中,它同样有效。()
同样重要。您希望首先计算=
。您可以定义一个变量weekend\u index=(0,6)
并检查weekend\u index中的DayOfWeek
。然后在np中放入一个条件。where()
频繁出现ValueError
。它表示在需要标量真/假(例如或)的上下文中使用数组。您可以定义变量weekend\u index=(0,6)
,并在weekend\u index中检查DayOfWeek。然后在np中放入一个条件。where()
频繁出现ValueError
。它表示数组正在预期标量真/假的上下文中使用(例如或)。