LoginSignup
3
2

More than 5 years have passed since last update.

【Python】Numpyのサンプル

Posted at

環境

Python3

Numpyとは

  • Pythonで利用可能な数値演算用ライブラリです。
  • 多次元配列の数値計算や配列操作を行う際に便利です。
  • 修正BSDライセンス

配列

  • 配列の操作が以下のように直感的に実装できます。
# numpyライブラリをインポート
import numpy as np

# 整数型の配列を用意
arr_int32 = np.array([100, 200, 300, 400, 500], dtype=np.int32)
print(arr_int32)

# 浮動小数点型の配列を用意
arr_float = np.array([0.1, 0.2, 0.3, 0.4, 0.5], dtype=np.float64)
print(arr_float)

# 配列通しの計算を + で表現できます。
arr_sum = arr_int32 + arr_float
print(arr_sum)

=>
[100 200 300 400 500]
[0.1 0.2 0.3 0.4 0.5]
[100.1 200.2 300.3 400.4 500.5]
  • Numpyライブラリのインポート「import numpy as np」は慣例となっています。as np2 でも、as np3 でも動作しますが、その慣例も文化と思って、尊重しています。
  • 上記のように配列の要素通しの計算を簡単に記載できますが、配列の要素数が一致していないと以下のようにエラーとなります。
import numpy as np
arr_int32 = np.array([100, 200, 300, 400, 500], dtype=np.int32)
print(arr_int32)

arr_float = np.array([0.1, 0.2], dtype=np.float64)
print(arr_float)

arr_sum = arr_int32 + arr_float
print(arr_sum)

=> 
[100 200 300 400 500]
[0.1 0.2]
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-25-a384ac640ecb> in <module>()
      6 print(arr_float)
      7 
----> 8 arr_sum = arr_int32 + arr_float
      9 print(arr_sum)

ValueError: operands could not be broadcast together with shapes (5,) (2,) 

多次元配列

  • 前述の配列と同じく配列の操作が簡単に行えます。
import numpy as np
arr1 = np.array([[1, 2],[100, 200]])
print(arr1)

arr2 = np.array([[3, 4],[300, 400]])
print(arr2)

arr_sum = arr1 + arr2
print(arr_sum)

=>

[[  1   2]
 [100 200]]
[[  3   4]
 [300 400]]
[[  4   6]
 [400 600]]

最小値、最大値などの求め方

import numpy as np

#1~100までの連番を格納
arr = range(1, 100+1)

#最小値
print(np.min(arr))

#最大値
print(np.max(arr))

#平均
print(np.mean(arr))

#標準偏差
print(np.std(arr))

#分散
print(np.var(arr))

#合計値
print(np.sum(arr))

=>
1
100
50.5
28.86607004772212
833.25
5050

乱数の配列を生成

  • Numpyで乱数を生成することも出来ます。
  • 可視化してみました。
%matplotlib inline
from matplotlib import pyplot as plt

np.random.seed(10)
arr_ramdom = np.random.randint(1, 101, 100)

plt.hist(arr_ramdom)
plt.show()

image.png

ソート処理

  • np.sort()で配列のソートが行えます。逆順でソートする際は、 [::-1] を指定します。
np.random.seed(10)
arr_random = np.random.randint(1, 101, 10)

#昇順
print(np.sort(arr_random))

#逆順
print(np.sort(arr_random) [::-1] )

=>
[ 1  9 10 16 29 30 65 74 90 94]
[94 90 74 65 30 29 16 10  9  1]

行列を指定してのソート処理

  • ソート時に行列を指定する際は、axis で指定します。(0:行、1:列)
  • 昇順、逆順の指定は、上記、一次元配列と同様に [::-1] を指定した場合、逆順でソートします。列を逆順でソート時は、[:, ::-1] を指定します。
np.random.seed(1)
#行列(3×4)
arr_m = np.random.randint(1, 10+1, [3, 4])

print("【0.ソート前】")
print(arr_m)

print("【1.行を昇順でソート】")
print(np.sort(arr_m, axis=0))

print("【2.行を逆順でソート】")
print(np.sort(arr_m, axis=0)[::-1])


print("【3.列を昇順でソート】")
print(np.sort(arr_m, axis=1))

print("【4.列を逆順でソート】")
print(np.sort(arr_m, axis=1)[:, ::-1])

image.png

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2