注目キーワード

Pythonの数値計算をマスターしよう!

Pythonでの数値計算

はじめに

化学研究者のPython活用には数値計算技術は必須です。

本記事では、基本となる数値型や四則演算、より大規模な計算処理や行列演算が可能なライブラリ「NumPy」について解説します。

この記事を読むことで、業務自動化やMI、機械学習による開発効率化に必須の数値計算の基礎を押さえることができます。

基礎文法の全体像については以下の記事を参照ください。

関連記事

研究者のPython活用で必要な8つのポイント はじめに 「プログラミングって難しそう…?」 そう思っている化学者研究者の皆さん、ちょっと待ってください! 化学者研究者がPythonを使いこなすために押さえておくべきポイントは8[…]

Pythonの数値型:intとfloat

型の基本

Pythonでは、主に以下の2種類の数値型が用いられます。

説明
int 整数 -10, 0, 100
float 小数 3.14, -0.01, 2.0

type関数を用いるとデータ型を確認できます。

print(type(5))
# class 'int'と出力。int型という意味。
print(type(5.0))
# class 'float'と出力。float型という意味。

型を意識しないと起こるエラー

後ほど出てきますが、高度な数値計算を行うには「NumPy」というライブラリが必要です。
化学研究におけるPython活用には必須です。

NumPyを使う際に、int型かfloat型かを意識していないと起こるエラーを紹介します。

NumPyではベクトルや行列といったデータ配列を簡単に生成できます。
そのとき配列がint型になっていると、float型の数字を受け入れなくなってしまいます

# NumPyのインポート
import numpy as np

# int型の配列を生成
arr = np.array([1, 2, 3])
# 配列の一つ目の要素である1を1.5に変更して出力
arr[0] = 1.5
print(arr)
# [1 2 3]と出力され、1.5への変換が反映されない

配列をfloat型にすることでエラーを回避できます。

# 配列をfloat型で生成。dtype=floatを指定してもできます。
arr = np.array([1.0, 2.0, 3.0])
arr[0] = 1.5
print(arr)
# [1.5 2.  3. ]と出力され、変更が反映されている

基本の四則演算

Pythonの標準の演算子を使えば、簡単に数値演算ができます。

以下は代表的な演算の例です。写経してみましょう。

# 加算
a = 1 + 2
print(a)  # 出力: 3

# 減算
b = 5 - 3
print(b)  # 出力: 2

# 乗算
c = 4 * 3
print(c)  # 出力: 12

# 除算(結果はfloat型)
d = 6 / 3
print(d)  # 出力: 2.0

# 整数除算(整数部分のみ)
e = 8 // 3
print(e)  # 出力: 2

# 剰余(余りのみ)
f = 8 % 3
print(f)  # 出力: 2

# べき乗
g = 2 ** 3
print(g)  # 出力: 8

演算の優先順位は数学のルールと同様に、たとえば掛け算と除算は足し算より先に計算されます。
括弧を使って優先順位を明示することもできます。

result1 = 2 + 3 * 4
# 3*4が先、2+12 = 14
result2 = (2 + 3) * 4
# 括弧内が先、5*4 = 20
print(result1, result2)

NumPyによる高度な数値計算

ここまでPythonの標準機能について解説してきました。
なんだこんなものかと感じた方も多いかもしれませんが、標準機能でできることはこのくらいです。

ただ、化学研究者によるPython活用にはもっと高度な数値計算が必須です。
そこで、最も使用頻度の高いNumPyというライブラリを紹介します。

具体的なコードを交えて紹介していますが、初めて見るコードがたくさん出てきます。
まずは「こんな計算がNumPyでできるんだ」という程度で読んでいただければと思います。

NumPyのインストールがまだの方は、以下の記事を参考にインストールしてください。

ライブラリの紹介

一括インストールから用途別に徹底解説 はじめに 化学研究や実験データ解析、さらには自動化や機械学習による開発加速が求められる中、Pythonはこうした業務を大幅に効率化するための強力なツールです。 本記事では、化学[…]

数学関数

実はPythonの標準機能では平方根や三角関数の計算は出来ません。
そこでNumPyの出番です。

以下のようなコードで計算することができます。
最初のimportというコードは、インストールしたライブラリを呼び出すためのものです。

# NumPyのインポート
import numpy as np

# 平方根の計算
sqrt_value = np.sqrt(16)
print(sqrt_value)
# 出力: 4.0

# 三角関数の計算
sin_value = np.sin(0)  # 0°のsin
cos_value = np.cos(0)  # 0°のcos
print(sin_value)
# 出力: 0.0
print(cos_value)
# 出力: 1.0

行列演算

NumPyによって行列演算も可能です。
化学研究者がPythonで機械学習やMIを活用するには、大量のデータを処理・計算する必要があります。

こういった処理・計算には行列を用います。
なぜ行列を用いるのか、という点については別記事で解説する予定です。

ここではNumPyを使った行列演算の一例を紹介します。
次の行列演算を以下のコードでそれぞれ実行しています。ご自身の環境で写経してみてください。

# NumPyのインポート
import numpy as np

# 2x2の行列を作成
A = np.array([[1, 2],
              [3, 4]])
B = np.array([[5, 6],
              [7, 8]])

# 行列の加算
add_result = A + B
print(add_result)

# 行列のスカラー倍
scalar_result = A * 3
print(scalar_result)

# 行列の掛け算(行列積=ドット積)
multiply_result = np.dot(A, B)
print(multiply_result)

おわりに

本記事では数値計算の基礎と、NumPyを使った高度な数値計算の一例を紹介しました。

数値計算はPythonの根幹なので、まずは基礎をしっかり理解していただければと思います。

NumPyの使い方に関しては詳細解説を別記事でまとめる予定です。

最新情報をチェックしよう!