Python モジュール: numpy

  • Python で行列を扱うためのモジュール

モジュールの読み込み

import numpy

あるいは

import numpy as np
  • as np によって、以降 np で呼び出せる。
  • ここではこっちの読み込みをした場合で記述していく。

行列

行列の作成

  • numpy 用の行列データ matrix を作成する方法
    • リストを numpy 用の行列に変換する場合
      matrix = np.array(list_matrix)
      • list_matrix: リストで作成した行列
    • ゼロ行列を作成する場合
      matrix = np.zeros([row,col])
      • row: 行のサイズ (0 を指定することで空の行列を作ることができる)
      • col: 列のサイズ

行列の結合

  • 縦に結合 (行を追加)
    matrix = np.vstack((matrix1, matrix2))
    • matrix1, matrix2: 結合する行列データ
    • 結合する行列データは何個でも指定できる。
    • タプルで指定するため、vstack の後は関数用とタプル用の括弧で二重になる。
  • 横に結合 (列を追加)
    matrix = np.hstack((matrix1, matrix2))
    • matrix1, matrix2: 結合する行列データ
    • 結合する行列データは何個でも指定できる。
    • タプルで指定するため、vstack の後は関数用とタプル用の括弧で二重になる。

行列の抽出

  • 特定の要素を抽出
    value = matrix[row][col]
    • value: 抽出した要素を格納する変数
    • row: 抽出したい行 (リストと同じく、0 から始まるインデックスを指定)
    • col: 抽出したい列 (リストと同じく、0 から始まるインデックスを指定)
  • 特定の要素をスライスで抽出
    new_matrix = matrix[row_slice][col_slice]
    • new_matrix: 抽出した行列を格納する変数
    • row_slice: 抽出する行を指定するスライス
    • col_slice: 抽出する列を指定するスライス
    • リストと同じく、スライス (例: [2:5]) で範囲で抽出することができる。
  • 不連続な範囲を抽出
    new_matrix = matrix[np.array(row_list),np.array(col_list)]
    • new_matrix: 抽出した行列を格納する変数
    • row_list: 抽出したい行のリスト
    • col_list: 抽出したい列のリスト
    • 不連続な範囲 (例: 2,5,8,10 など) を抽出する場合は、行列データに行列データのインデックスを与える。ここでは、np.array() を使っているが、行列データを指定するのであれば、np.array() を使う必要はない。

ランダムな行列の作成

  • テスト用などに使えるかも。
  • 小数の行列 (0〜1 まで)
    matrix = np.random.rand(SHAPE)
    • SHAPE: 行列のサイズ (多次元にする場合はタプルで指定する)
  • 整数の行列
    matrix = np.random.randint([LOW,] HIGH, size = SHAPE)
    • LOW: 最小値 (オプション)
    • HIGH: 最大値 (指定した値は含まない)
    • SHAPE: 行列のサイズ (多次元にする場合はタプルで指定する)

ゼロ行列の作成

  • 要素すべてが 0 の行列の作成
    MATRIX = np.zeros(SHAPE, dtype = TYPE)
    • MATRIX: ゼロ行列を格納する変数
    • SHAPE: 行列のサイズ (多次元にする場合はタプルで指定する)
    • TYPE: 行列の型

行列全体のキャスト

  • 行列全体のデータ型を変える。
    NEW_MATRIX = MATRIX.astype(TYPE)
    • NEW_MATRIX: データ型変換後の行列データを格納する変数
    • MATRIX: 変換したい行列データ
    • TYPE: データ型
      • np.float: 浮動小数点型
      • np.int: 整数型

ヒストグラム

  • 行列データをヒストグラム分類することもできる。
    np.histogram(MATRIX, bins = BINS, density = DENSITY_BOOL)
    • MATRIX: ヒストグラム化したい行列データ (1次元データに変換される)
    • BINS: ヒストグラムの幅
      • int (整数) で指定すると分割数
      • リストで指定すると、リストの各要素が各ヒストグラムバーの最小値となる。
      • “auto”“fd”“doane”“scott”“rice”“sturges”“sqrt” を指定すると、各アルゴリズムに合わせた BINS が生成される。詳しくはドキュメントを参照。
    • DENSITY_BOOL: 確率表示の有無
      • True を指定すると、0〜1 の確率で表示する。
      • False を指定すると、要素のカウント数で表示する。
    • 結果 (numpy の行列データで返される)
      • 1 番目の結果: ヒストグラム (DENSITY = True の場合は確率)
      • 2 番目の結果: BINS
  • 参考サイト: