如何在不忽略数字的情况下“和”数据?

2024-04-26 15:04:03 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我有一个数字18573628,其中每个数字代表某种标志,我想检查第四个标志的值是否设置为7(它是这样的)。你知道吗

我不想使用索引。我想以某种方式and使用标志掩码,例如:

00070000

我通常会使用np.logical_and()或类似的东西,但这会认为任何正值都是True。在考虑数字的值时,我如何and?例如,使用

flags = 18573628

以及

mask = 00070000

会产生00010000

尽管试着换个面具,比如

mask = 00040000

会产生00000000


Tags: andtrue标志np方式代表mask数字
3条回答

你能做的就是

if (x // 10**n % 10) == y:
    ...

检查n的第x位(从右边开始计数)是否等于y

小数掩码必须使用除法和模:

flags = 18573628
mask = 10000

if (flags / mask) % 10 == 7:
    do_something

您可以将输入的数字转换成一个数字数组,然后简单地用特定的索引索引到该数组中,就可以得到这些数字。为了进行转换,我们可以使用np.fromstring,就像这样-

In [87]: nums = np.fromstring(str(18573628),dtype=np.uint8)-48

In [88]: nums
Out[88]: array([1, 8, 5, 7, 3, 6, 2, 8], dtype=uint8)

In [89]: nums[3] == 7
Out[89]: True

相关问题 更多 >