今回は、知っておきたいNumPyのビット演算を5つご紹介します。
では、さっそく始めましょう
まず始めに、Bitwise演算子は、関数の中にある抽象化された層を通して、ビットレベルの演算、つまりビットごとの演算を行うのに役立ちます。
このトピックでは、以下のトピックを取り上げる予定です。
- AND演算
- OR演算
- XOR演算
- 反転演算
- 整数から2進数への変換
さあ、始めよう
1. NumPyのビット演算 – AND
NumPyのビット演算子ANDは、入力値の配列に対してビット単位のAND演算を行うことができます。
つまり、入力された整数値のバイナリ表現全体に対してAND演算を行うのです。
構文は以下の通りです。
numpy.bitwise_and(num1,num2) |
例えば、以下の様になります。
以下の例では、bitwise_and() 関数は、整数値 2 と 3 を同等のバイナリ値、すなわち 2 ~ 010 と 3 ~ 011 に変換します。
さらに、AND 演算を行い、等価ビットが両方とも 1 の場合は結果のビットとして 1 を返し、それ以外の場合は 0 を返します。
import numpy as np
x = 2
y = 3
print ( "x=" ,x)
print ( "y=" ,y)
res_and = np.bitwise_and(x, y)
print ( "Bitwise AND result: " , res_and)
|
出力。
x = 2
y = 3
Bitwise AND result: 2
|
この記事もチェック:PandasのDataFrameをNumpyの配列に変換する方法
2. ビット単位のOR演算
AND演算と同様に、NumPyには numpy.bitwise_or() 関数
があり、データ値に対してNumPyのビット単位の演算「OR」を実行することができるようになっています。
構文は以下の通りです。
numpy.bitwise_or(num1,num2) |
例えば、以下の様になります。
この例では、bitwise_or()関数が2つの整数の値に対してOR演算を行います。
OR演算では、ビットが同じ0/0であれば0を、そうでなければ1を返します。
import numpy as np
x = 2
y = 3
print ( "x=" ,x)
print ( "y=" ,y)
res_or = np.bitwise_or(x, y)
print ( "Bitwise OR result: " , res_or)
|
を結果を出力すると、以下の様になります。
x = 2
y = 3
Bitwise OR result: 3
|
3. ビットごとの XOR 演算
XOR演算はNumPyのビット演算の1つです。
この演算はnumpy.bitwise_xor()関数を用いて行うことができます。
これにより、使用するビット単位のデータに対して、ビット単位のXOR演算を簡単に実行することができます。
例えば、以下の様になります。
import numpy as np
x = 2
y = 3
print ( "x=" ,x)
print ( "y=" ,y)
res_xor = np.bitwise_xor(x, y)
print ( "Bitwise XOR result: " , res_xor)
|
結果は以下の通りです。
x = 2
y = 3
Bitwise XOR result: 1
|
4. ビット単位の反転演算
ビットごとの反転演算はnumpy.invert()関数を用いて行います。
これは、内部でバイナリ表現形式として処理されているデータビットに対して、ビット単位のNOT演算を行うことを意味します。
符号付き整数の場合、2の補数値が返されます。
例えば、以下の様になります。
import numpy as np
x = 2
y = 3
print ( "x=" ,x)
res = np.invert(x)
print ( "Bitwise Invert operation result: " , res)
|
結果は以下の通りです。
x = 2
Bitwise Invert operation result: - 3
|
5. バイナリ表現
NumPyモジュールを使って、整数値を明示的に2進数に変換することができます。
binary_repr()`関数を使用すると、簡単に整数値を2進数に変換することができます。
構文は以下の通りです。
numpy.binary_repr() |
例えば、以下の様になります。
import numpy as np
x = 7
print ( "x=" ,x)
res = np.binary_repr(x)
print ( "Bitwise representation of x: " , res)
|
結果は以下の通りです。
この例では、int 値 ‘7’ を同等の 2 進表現に変換しています。
x = 7
Bitwise representation of x: 111
|
まとめ
ここまでで、このトピックは終了です。
何か疑問があれば、お気軽にコメントください。
Pythonプログラミングに関連するこのような記事のために、私たちにご期待ください。