您可以使用按位AND运算符&
。让我们看下面:
x = [1, 2, 3, 4, 5, 6, 7]
y = [i for i in x if i&1]
>>>
[1, 3, 5, 7]
按位AND运算符与1一起使用,其工作原理是因为,用二进制编写时,奇数必须以其第一位为1。
23 = 1 * (2**4) + 0 * (2**3) + 1 * (2**2) + 1 * (2**1) + 1 * (2**0) = 10111
14 = 1 * (2**3) + 1 * (2**2) + 1 * (2**1) + 0 * (2**0) = 1110
如果值是奇数,则与1的AND运算只会返回1(二进制数1也将有最后一位数字)。
查看Python Bitwise Operator页面了解更多信息。
PS:如果要在数据框中选择奇数和偶数列,则可以在战术上使用此方法。假设面部关键点的x和y坐标以x1,y1,x2等列给出。要使用每个图像的宽度和高度值对x和y坐标进行归一化,您可以简单地执行
for i in range(df.shape[1]):
if i&1:
df.iloc[:, i] /= heights
else:
df.iloc[:, i] /= widths
这与问题不完全相关,但对于数据科学家和计算机视觉工程师而言,此方法可能有用。
干杯!