測定結果のデータ処理などで2乗の計算をしたい時がありますよね?
本記事ではpythonで2乗を計算する方法を5つ紹介します。
算術演算子**が使いやすくておすすめです。
本記事のコードは全てグーグルコラボラトリーで記述・動作を確認しています。
グーグルコラボラトリーとはgoogleアカウントを持っている人であれば、誰でも・無料で使うことができるpythonの対話型実行環境です。
データ分析に必要なライブラリが初めから搭載されていて、環境構築の必要がないため、python初心者には特にオススメです!
pythonで二乗する方法5つ
pyhtonで2乗する方法はいくつかありますが、今回はその中から5つ紹介します。
- かけ算で2乗を計算する
- 算術演算子**で2乗を計算する
- 組み込み関数pow()で2乗を計算する
- リスト内の数値を2乗する|forとmap()
- 配列を2乗する|numpy.square()と算術演算子**
掛け算で二乗を計算する
1つ目は四則演算である、掛け算で計算する方法です。
単純な方法ですが、3乗、4乗…と大きくなるとコードの見た目が悪くなります。
3乗以上の計算をしたい場合は次に紹介する算術演算子**を使う方法がおすすめです。
print('2の2乗は', 2 * 2, 'です。')
print('2の3乗は', 2 * 2 * 2, 'です。')
print('2の4乗は', 2 * 2 * 2 * 2, 'です。')
出力:
2の二乗は 4 です。
2の3乗は 8 です。
2の4乗は 16 です。
算術演算子**で2乗を計算する
算術演算子**はべき乗を計算する演算子です
べき乗とはXnのnに任意の数値を指定する計算です。
3乗以上の計算はもちろん、自然数のみ指定できる累乗と異なり、少数や分数、負の値も指定できます。
「kg(キログラム)」を「10-3g(グラム)」変換するといった、単位を統一して計算したいときにおすすめです。
print('2の2乗は', 2 ** 2, 'です。')
print('2の3乗は', 2 ** 3, 'です。')
print('2の4乗は', 2 ** 4, 'です。')
print(10 ** 0.5)
print(10 ** (1/2)) #分数は()でくくらないと「10の1乗 割る2」になってしまう。
print(10 ** -3)
出力:
2の2乗は 4 です。
2の3乗は 8 です。
2の4乗は 16 です。
3.1622776601683795
3.1622776601683795
0.001
組み込み関数pow()で2乗を計算する
pow()はべき乗を計算できる関数です。また組み込み関数のため、ライブラリのインポート等の環境構築が不要です。
pow(底とする数字, 乗算の数字)で計算できます。
分数乗したい場合は、pow()関数を使うことで記述ミスが少なくなります。算術演算子**で分数乗しようとすると、()のつけ忘れによる記述ミスの可能性があります。
print(pow(2, 2))
print(pow(2, 3))
print(pow(2, 4))
print(pow(10, 0.5))
print(pow(10, 1/2))
print(pow(10, -3))
出力:
4
8
16
3.1622776601683795
3.1622776601683795
0.001
math.pow()
math.pow()もpow()と同じ使い方で、べき乗を計算できます。mathはpython標準ライブラリにある、数学関数に関するモジュールです。
pow()との違いは、指定した値をfloat型(少数点数)に変更する点です。
math.pow()は初めにmathをインポートする必要があります。
import math
print('math.pow():', math.pow(2, 2))
print('pow():', pow(2, 2))
出力:
math.pow(): 4.0 pow(): 4
リスト内の数値を2乗する|forとmap()
リスト内の数値を2乗する方法を2つ紹介します。for文とmap()関数です。
for文を使って2乗を計算する
1つ目にforループを使う方法を紹介します。forループは指定した動作を繰り返し行う構文です。
for文と算術演算**を使って、リスト内の数値全てを2乗する関数、list_squ()を定義します。
def list_squ(list):
result = []
for i in data:
i = i ** 2
result.append(i)
print(result)
作成したlist_squ()に問題ないか、実際に動かしてみましょう。
始めにリストを用意します。
data = [1, 2, 3, 4, 5, 6]
print(data)
出力:
[1, 2, 3, 4, 5, 6]
それでは計算します。
list_squ(data)
出力:
[1, 4, 9, 16, 25, 36]
問題なく動きました。
map()関数を使う
map()関数はリスト内の要素全てに同じ計算を実行する関数です。
組み込み関数のため、環境構築等の準備は必要ありません。
map(計算式(関数), リスト)で実行可能です。
まず算術演算子**を使って、2乗の計算式をsqu2の名前で定義します。
def squ2(i):
return i ** 2
map()関数を使って、計算式squ2をリストに適用します。
map()関数はイテレータを返すため、そのままではリストの中身を確認できません。
list()関数を使うことで、リストの中が確認可能です。
data = [1, 2, 3, 4, 5, 6]
list(map(squ2), data)
出力:
[1, 4, 9, 16, 25, 36]
計算式とmap()関数のコードはlambda(無名関数)を用いることで、1行で記述可能です。
list(map(lambda i: i ** 2, data))
出力:
[1, 4, 9, 16, 25, 36]
配列を2乗する|numpy.square()と算術演算子**
numpy配列を2乗する方法として、numpy.square()と算術演算子**の2通を紹介します。
numpy.square()
numpy.square(配列)と記述することで、配列の2乗を計算できます。
numpyは外部ライブラリのため、現在の環境にインストールおよびインポートする必要があります。
インストールが難しい人はグーグルコラボラトリーの利用がおすすめです。
import numpy as np
# 2行3列のnumpy配列
arr = np.array([[1, 2, 3],
[4, 5, 6]])
np.square(arr)
出力:
array([[ 1, 4, 9],
[16, 25, 36]])
算術演算子**を使用する
算術演算子**は配列の計算も可能です。2乗だけでなく、3乗以上の計算も可能です。
# 2行3列のnumpy配列
arr = np.array([[1, 2, 3],
[4, 5, 6]])
#配列の2乗
arr_squ2 = arr ** 2
#配列の3乗
arr_3 = arr ** 3
print('arr_squ2\n', arr_squ2)
print('arr_3\n', arr_3)
出力:
arr_squ2
[[ 1 4 9]
[16 25 36]]
arr_3
[[ 1 8 27]
[ 64 125 216]]
【応用】二乗和(平方和)を計算する
統計分析では、二乗和(平方和)を計算したい場合があります。
平方和とはデータが平均値からどれくらいズレているかを表す統計量で、次のような式で計算します。
\(平方和=(a-平均)^{2}+(b-平均)^{2}+(c-平均)^{2}…+(n-平均)^{2}\)
pythonで2乗を勉強する応用編として、平方和を計算するコードを書いてみましょう。
平方和を計算するには、
- 平均を計算する。
- 各数値と平均の差を計算する。
- 2 をそれぞれ2乗する。
- 3 の合計を計算する。
といった工程が必要です。
2と3の工程はforループで処理させます。
forループは指定した動作を繰り返し行う構文です。
2乗の計算は算術演算**を使用します。
それでは平方和を計算する関数、squ()を記述します。
def squ(list) :
# 1.平均の計算
sum = 0
for number in data:
sum = sum + number
mean = sum / len(data)
# 2と3の計算をfor文で記述、結果をsqurにどんどん足す(4)
squr = 0
for number in data:
squr = squr + (number - mean) ** 2
print(squr)
関数ができたので、実際に使って確認しましょう。
#リストの用意
data = [1, 2, 3, 4, 5, 6]
squ(data)
出力:
17.5
手計算で確認したところ結果が同じだったので、問題無く動いたと判断します。
まとめ
今回はpythonで2乗を計算する方法を紹介しました。
算術演算子**は事前準備の必要なくすぐ使えてオススメです。
よくある質問
- pythonで平方根(ルート)を計算したいです。
-
math.sqrt()やsympy.sqrt()を使うことで、平方根の計算ができます。
合わせて読みたい - 算術演算子**とpow()で計算結果が違うのですが…
-
-(マイナス)を含む数字を扱う際に、記述の仕方で計算結果が異なります。
-3の2乗をそれぞれの方法で計算してみます。
print(-3 ** 2) print(pow(-3, 2))
出力:
-9
9pow()関数では期待通りの計算結果ですが、算術演算子**では-9になってしまいました。
算術演算子**は()(丸括弧)で囲われていない場合、右から左へ計算していきます。
先ほどの場合、-(3 ** 2)の計算になっているのです。
この問題を回避するには次のように記述しましょう。
print((-3) ** 2)
出力:
9
- pythonについてもっと勉強したいです!
-
pythonを勉強するには書籍・動画・プログラミングスクールなどがあります。特にudemyは有料ですが、pythonを勉強できる動画がたくさんあるのでおすすめです。
合わせて読みたい
コメント