列表中元素之间的按位运算

hav*_*063 9 python arrays bit-manipulation numpy list

我有一个按位元素列表,例如[1,1,1],我想在列表中的每个元素之间进行按位OR运算.所以,例如

对于[1,1,1]做

1 | 1 | 1 = 1

或[1,17,1]做

1 | 17 | 1 = 17

如何在不循环的情况下执行此操作?Numpy的bitwise_or似乎只适用于2个阵列.是否有点和/或 适用于每个元素,类似于sum或np.mean?谢谢.

Ash*_*ary 20

你可以用reduceoperator.ior:

>>> from operator import ior
>>> lst = [1, 17, 1]
>>> reduce(ior, lst)
17
Run Code Online (Sandbox Code Playgroud)

正如@DSM在评论中所建议的那样,numpy等价物将是:

>>> import numpy as np
>>> arr = np.array(lst)
>>> np.bitwise_or.reduce(arr)
17
Run Code Online (Sandbox Code Playgroud)

  • 与numpy等价的`np.bitwise_or.reduce(arr)`. (3认同)

tca*_*uce 9

这适用于numpy reduce:

>>> ar = numpy.array([1,17,1])
>>> numpy.bitwise_or.reduce(ar)
17
Run Code Online (Sandbox Code Playgroud)