べき乗というのは\(x^n\)と表さられるものでしたね
Pythonでのべき乗にはいくつかのやり方が存在しますが、今回はこの3つを紹介します
- 演算子
- pow
- numpy.power
演算子
べき乗の演算子は**
です
演算子を使う方法が一番わかりやすくて、スッキリすると思います
なので特別な理由がなければこの方法で問題ないでしょう
**
print(2**3)
#8
print(5*2)
#25
print(2**-1)
#0.5
print(3**-2)
#0.1111111111111111
少数のべき乗もできます
print(0.5 ** 3)
# 0.125
print(-1.5 ** -1 )
# -0.6666666666666666
print(0.5 ** 0.5)
# 0.7071067811865476
print(-1.5 ** 2) # -1.5のマイナスより**の方が評価が早いため注意
# -2.25 = -(1.5)^2
pow
Pythonにはべき乗を計算してくれるpow()が組み込み関数として用意されています
べき乗演算子とは違い関数なので、高階関数にべき乗の関数を渡したい場合はこのpow
を使うと良いでしょう
pow(底, 指数)
print(pow(2, 3))
# 8
print(pow(5, 2))
# 25
print(pow(2, -1))
# 0.5
print(pow(3, -2))
# 0.1111111111111111
print(pow(0.5, 3))
# 0.125
print(pow(-1.5, -1))
# -0.6666666666666666
print(pow(0.5, 0.5))
# 0.7071067811865476
print(pow(-1.5, 2))
# 2.25
numpy.power
numpyに対してべき乗をしたい時はnumpy.power
が使えます
ただ、べき乗指数部にマイナスは使えないので注意しましょう
import numpy as np
print(np.power(2, 3))
# 8
print(np.power(5, 2))
# 25
print(np.power(2, -1))
# ValueError: Integers to negative integer powers are not allowed.
numpy配列に対してまとめてべき乗を計算することもで可能です
指数をスカラーにすると、そのスカラーで全ての要素に対してべき乗してくれます
import numpy as np
x = np.asarray([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
ans = np.power(x, 2)
print(ans)
# [ 1 4 9 16 25 36 49 64 81 100]
print(type(ans))
# <class 'numpy.ndarray'>
底のnumpy配列と同じ形のnumpy配列を指数に与えることで、個別に指数を用意してべき乗することもできます
import numpy as np
x = np.asarray([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
ans = np.power(x, x)
print(ans)
# [1, 4, 27, 256, 3125, 46656, 823543, 16777216, 387420489, 10000000000]
print(type(ans))
# <class 'numpy.ndarray'>
numpy.power
でべき乗する方法を見てきましたが、numpyはブロードキャストされるので、べき乗演算子を使っても計算することは可能です
import numpy as np
x = np.asarray([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
ans = x ** 2
print(ans)
# [ 1 4 9 16 25 36 49 64 81 100]
print(type(ans))
# <class 'numpy.ndarray'>
複素数へのべき乗
べき乗演算子は複素数に対しても使用可能で、
\((3+4j)^2=9+2\times3\times4j-16=-7+24j\)と正しく計算されていることがわかります
y = 3 + 4j
print(y ** 2)
# (-7+24j)
コメント