python使用多个条件和numpy where

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

我有一个巨大的数组,名为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 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
。它表示数组正在预期标量真/假的上下文中使用(例如
)。