この記事は、JavaとPythonを基礎から学びたい私のための Advent Calendar 2024の14日目の記事です。numpyは奥が深く、すべてを1日で学習することはできないと判断しました。今日勉強したことについて書いています。
numpy
Pythonの標準ライブラリの一つです。Pythonにはたくさんのライブラリが用意されているようですが、その中でもnumpyは計算のためのやつです。
できること
配列を使った計算
昨日勉強した配列([]←これ)を使って、計算ができるようになるみたいです。
numpyを入れていないときは、
A=[1,2,3,3,5]
B=[4,3,2,1,7]
print(A+B)
結果:[1, 2, 3, 3, 5, 4, 3, 2, 1, 7]
numpyをれていない場合は、配列の中の計算ができないため、一つの大きな配列となりました。
また、
A=[1,2,3,3,5]
B=5
print(A*B)
結果:[1, 2, 3, 3, 5, 1, 2, 3, 3, 5, 1, 2, 3, 3, 5, 1, 2, 3, 3, 5, 1, 2, 3, 3, 5]
配列と整数を掛け合わせた場合は配列が整数の数だけ増殖してしまいます。
numpyを使うときは
import numpy as np
A=np.array([1,2,3,3,5])
B=5
print(A*B)
結果:[ 5 10 15 15 25]
numpyの配列は、np.array([配列の中身])となるみたいです。また、これの計算結果についても配列の中の要素に対して掛け算されるようになりました。
import numpy as np
A=np.array([1,2,3,3,5])
B=np.array([4,3,2,1,7])
print(A+B)
結果:[ 5 5 5 4 12]
numpyを入れる前は長い一つの配列になっていましたが、配列同士が足し合わされるようになりました。ちなみに一つの配列にするときは、np.concatenate()を使うようです。
import numpy as np
A=np.array([1,2,3,3,5])
B=np.array([4,3,2,1,7])
print (np.concatenate((A,B)))
結果:[1 2 3 3 5 4 3 2 1 7]
結果的に()は2重につける必要があるっぽいです。
このconcatenateを使う際は、()の数に気を付けた方がいいと思います。上のように、2個も3個も”)”を付けていると、結構見づらいです。
配列の並び替え
配列の中身を並び替えることができるそうです
B=np.array([4,3,2,1,7])
print (np.sort(B))
結果:[1 2 3 4 7]
簡単に並べ替えられます。一から順番に並ぶようです。
array()の中の配列を増やす
array()の中の配列を2個以上に増やすことができるようです。
A=np.array([[1,2,3,],[2,3,4],[3,4,5]])
B=np.array([[3,4,5],[2,3,4],[1,2,3]])
print (A+B)
結果:[[4 6 8]
[4 6 8]
[4 6 8]]
array()の中の配列を増やす際は、()内のすべての配列を[]でくくってあげる必要があるようです。
行列の計算をするときには、とても便利な機能です。
配列の中身
中身の合計や最大、最小値を求めることができるようです。
import numpy as np
A=np.array([[1,2,3,],[2,3,4],[3,4,5]])
print (np.sum(A))
print (np.max(A))
print (np.min(A))
print (np.mean(A))
結果:27
5
1
3.0
上から順に合計、最大値、最小値、平均となっています。配列が一つの場合はnumpyを使わなくても平均以外は出すことができました(max(A)など)。numpyを使うことで平均が簡単に求まるほか、配列が2つ以上くっついているときにも対応しています。
import numpy as np
A=np.array([[1,3,5,],[2,3,4],[3,4,5]])
print(np.sum(A,axis=0))
print(np.sum(A,axis=1))
sumの()の、","の右側にaxis=を付けることで行だけ、列だけといった細かな指定もできるようです。
まとめ
numpyは主に配列を扱うことができます。
配列が楽になりました。2つ以上の配列をまとめて使うことで、行列の計算にも対応しています。要素を並び替えることもできます。
参考文献