pythonで二乗を計算する方法5つ|リストやnumpyでの方法も紹介

pythonで2乗を計算する方法5つ

測定結果のデータ処理などで2乗の計算をしたい時がありますよね?

本記事ではpythonで2乗を計算する方法を5つ紹介します。

算術演算子**が使いやすくておすすめです。

本記事のコードは全てグーグルコラボラトリーで記述・動作を確認しています。

グーグルコラボラトリーとはgoogleアカウントを持っている人であれば、誰でも・無料で使うことができるpythonの対話型実行環境です。

データ分析に必要なライブラリが初めから搭載されていて、環境構築の必要がないため、python初心者には特にオススメです!

目次

pythonで二乗する方法5つ

pyhtonで2乗する方法はいくつかありますが、今回はその中から5つ紹介します。

掛け算で二乗を計算する

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乗を勉強する応用編として、平方和を計算するコードを書いてみましょう。

平方和を計算するには、

  1. 平均を計算する。
  2. 各数値と平均の差を計算する。
  3. 2 をそれぞれ2乗する。
  4. 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
9

pow()関数では期待通りの計算結果ですが、算術演算子**では-9になってしまいました。

算術演算子**は()(丸括弧)で囲われていない場合、右から左へ計算していきます。

先ほどの場合、-(3 ** 2)の計算になっているのです。

この問題を回避するには次のように記述しましょう。 

print((-3) ** 2)

出力:

9

pythonについてもっと勉強したいです!

pythonを勉強するには書籍・動画・プログラミングスクールなどがあります。特にudemyは有料ですが、pythonを勉強できる動画がたくさんあるのでおすすめです。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次