Python入門トップページ


目次

  1. NumPy とは
  2. Python リストの場合
  3. NumPy の使用例
    1. 1次元配列(ベクトル)
    2. 2次元配列(行列)
    3. 要素の取り出し
    4. ベクトルと行列の変換
    5. NumPy のデータ型
    6. NumPy 配列の作成と操作
    7. ユニバーサル関数と集約関数
    8. NumPy 配列のソート
    9. NumPy の構造化配列
    10. NumPy 配列の保存と読み込み
  4. NumPy で線形代数
  5. NumPy の乱数生成

NumPy

NumPy の使用例

2次元配列(行列)

次に2次元配列を使ってみよう.リストのリストを np.array() 関数で行列に変換することができる.

行列の定義import numpy as np # プログラムの先頭でモジュールを読み込む
# 行列
A = np.array([[1, 2], [3, 4]])
print(A)
[[1 2]
 [3 4]]
行列の定義B = np.array([[7,8], [9, 10]])
print(B)
[[ 7  8]
 [ 9 10]]

行列に対して +* 演算子を使用すると,要素ごとに処理される.

要素ごとの和C = A + B # 要素ごとの和
print(C)
[[ 8 10]
 [12 14]]

行列の要素ごとの積はアダマール積と呼ばれます.

要素ごとの積(アダマール積)C = A * B   # 要素ごとの積
print(C)
[[ 7 16]
 [27 40]]

行列の積は np.dot() 関数を利用すると良い.

行列の積C = np.dot(A, B) # 行列の積
# 1x7+2x9,  1x8+2x10
# 3x7+4x9,  3x8+4x10
print(C)
[[25 28]
 [57 64]]

行列の転置には np.transpose() 関数を利用できるが,これ以外にもいくつかの記述方法がある.

行列の転置1print(A)
print(np.transpose(A))
[[1 2]
 [3 4]]
[[1 3]
 [2 4]]
行列の転置2print(A.transpose())
[[1 3]
 [2 4]]
行列の転置3print(A.T)
[[1 3]
 [2 4]]

例えば,「ゴチ」バトルの例で,商品価格の一覧が [50, 60, 70, 80, 90, 100] で与えられるとき,注文の組み合わせ xごとに合計価格を求めたいような場合は,次のようにすると良い.詳細はここの図で確認してください.集団 \(P\) の合計価格を求めています.

行列の転置4# 価格の一覧
w = np.array([50, 60, 70, 80, 90, 100])
# 注文方法(0は注文しない,1は注文する)
x = np.array([
    [0, 1, 0, 0, 1, 1],  # この行は 60, 90, 100円の商品を注文することを意味している
    [0, 1, 1, 1, 0, 0],
    [1, 1, 0, 0, 0, 0],
    [0, 1, 1, 1, 0, 1]
])
print('価格の一覧:', w)
print('注文方法')
print(x)
total = np.dot(x,w)
print('合計価格:', total)
価格の一覧: [ 50  60  70  80  90 100]
注文方法
[[0 1 0 0 1 1]
 [0 1 1 1 0 0]
 [1 1 0 0 0 0]
 [0 1 1 1 0 1]]
合計価格: [250 210 110 310]

目次に戻る