python:numpy

差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

両方とも前のリビジョン 前のリビジョン
次のリビジョン
前のリビジョン
python:numpy [2017/12/06 12:29] – [行列] mumeiyamibitopython:numpy [2019/01/29 10:34] (現在) mumeiyamibito
行 41: 行 41:
     * ''col_slice'': 抽出する列を指定するスライス     * ''col_slice'': 抽出する列を指定するスライス
     * リストと同じく、スライス (例: ''[2:5]'') で範囲で抽出することができる。     * リストと同じく、スライス (例: ''[2:5]'') で範囲で抽出することができる。
-  * 不連続な範囲を抽出\\ <code python>new_matrix = matrix[np.array(row_list),np.array(col_list)]</code>+  * 不連続な範囲を抽出\\ <code python>new_matrix = matrix[np.array(row_list)][:,np.array(col_list)]</code>
     * ''new_matrix'': 抽出した行列を格納する変数     * ''new_matrix'': 抽出した行列を格納する変数
     * ''row_list'': 抽出したい行のリスト     * ''row_list'': 抽出したい行のリスト
     * ''col_list'': 抽出したい列のリスト     * ''col_list'': 抽出したい列のリスト
     * 不連続な範囲 (例: ''2,5,8,10'' など) を抽出する場合は、行列データに行列データのインデックスを与える。ここでは、''np.array()'' を使っているが、行列データを指定するのであれば、''np.array()'' を使う必要はない。     * 不連続な範囲 (例: ''2,5,8,10'' など) を抽出する場合は、行列データに行列データのインデックスを与える。ここでは、''np.array()'' を使っているが、行列データを指定するのであれば、''np.array()'' を使う必要はない。
 +    * 上記の方法だと
   * 参考サイト: [[http://oimokihujin.hatenablog.com/entry/2015/10/01/112450 | numpy.arrayによる2次元配列から任意の列を抽出する方法 - おいも貴婦人ブログ]]   * 参考サイト: [[http://oimokihujin.hatenablog.com/entry/2015/10/01/112450 | numpy.arrayによる2次元配列から任意の列を抽出する方法 - おいも貴婦人ブログ]]
  
行 51: 行 52:
   * テスト用などに使えるかも。   * テスト用などに使えるかも。
   * 小数の行列 (0〜1 まで)\\ <code python>matrix = np.random.rand(SHAPE)</code>   * 小数の行列 (0〜1 まで)\\ <code python>matrix = np.random.rand(SHAPE)</code>
-    * ''SHAPE'': 行列のサイズ (多次元にする場合はタプル指定する)+    * ''SHAPE'': 行列のサイズ (多次元場合、カンマ区切ってサイズを表記する; 例: ''3,100'')
   * 整数の行列\\ <code python>matrix = np.random.randint([LOW,] HIGH, size = SHAPE)</code>   * 整数の行列\\ <code python>matrix = np.random.randint([LOW,] HIGH, size = SHAPE)</code>
     * ''LOW'': 最小値 (オプション)     * ''LOW'': 最小値 (オプション)
     * ''HIGH'': 最大値 (指定した値は含まない)     * ''HIGH'': 最大値 (指定した値は含まない)
     * ''SHAPE'': 行列のサイズ (多次元にする場合はタプルで指定する)     * ''SHAPE'': 行列のサイズ (多次元にする場合はタプルで指定する)
 +  * 対称行列 (既に matrix は生成済みの場合)\\ <code python>symmetry = (matrix + matrix.T) / 2
 +np.fill_diagonal(symmetry, 0)</code>
 +    * 1 行目で、転置行列と足し合わせて、対称な行列を作成する。
 +    * ''np.fill_diagonal(matrix, var)'' は ''matrix'' の対角成分に ''var'' を代入する関数で、これにより対角成分が 0 になる。破壊的なメソッドなので、元の行列は残らない。
  
 === ゼロ行列の作成 === === ゼロ行列の作成 ===
行 62: 行 67:
     * ''SHAPE'': 行列のサイズ (多次元にする場合はタプルで指定する)     * ''SHAPE'': 行列のサイズ (多次元にする場合はタプルで指定する)
     * ''TYPE'': 行列の型     * ''TYPE'': 行列の型
 +
 +=== 空の行列の作成 ===
 +  * 空の行列 (ただし、値は 0 とは限らない) を作成する。\\ <code python>NEW_MATRIX = np.empty((ROW, COL), dtype = TYPE)</code>
 +    * ''NEW_MATRIX'': 空の行列を格納する変数
 +    * ''ROW'': 生成する行列の行数
 +    * ''COL'': 生成する行列の列数
 +    * ''TYPE'': データ型
 +    * ''dtype'' は省略可
 +  * 既存の行列と同じサイズの空の行列を作成する。\\ <code python>NEW_MATRIX = np.empty_like(MATRIX)</code>
 +    * ''NEW_MATRIX'': 空の行列を格納する変数
 +    * ''MATRIX'': サイズを参照したい行列
 +  * 参考サイト: [[https://note.nkmk.me/python-numpy-empty-empty-like/ | NumPyで空の配列ndarrayを生成するemptyとempty_like | note.nkmk.me]]
  
 === 行列全体のキャスト === === 行列全体のキャスト ===
行 70: 行 87:
       * ''np.float'': 浮動小数点型       * ''np.float'': 浮動小数点型
       * ''np.int'': 整数型       * ''np.int'': 整数型
 +
 +=== 対角行列の生成 ===
 +  * 対角成分の配列から、対角行列を生成する。\\ <code python>DIAG_MATRIX = np.diagflat(MATRIX1D)</code>
 +    * ''DIAG_MATRIX'': 対角行列を格納する変数
 +    * ''MATRIX1D'': 対角成分のみの 1 次行列
 +  * 参考サイト: [[http://d.hatena.ne.jp/gerumanium/20110907/1315403852 | 対角行列の生成 - gerumaniumの日記]]
 +
 +=== 対角成分の抽出 ===
 +  * 行列から対角成分を抽出する。\\ <code python>DIAG = np.diag(MATRIX)</code>
 +    * ''DIAG'': 対角成分を格納する変数
 +    * ''MATRIX'': 対角成分を抽出したい行列
  
 ==== ヒストグラム ==== ==== ヒストグラム ====
   * 行列データをヒストグラム分類することもできる。\\ <code python>np.histogram(MATRIX, bins = BINS, density = DENSITY_BOOL)</code>   * 行列データをヒストグラム分類することもできる。\\ <code python>np.histogram(MATRIX, bins = BINS, density = DENSITY_BOOL)</code>
-    * ''MATRIX'': ヒストグラム化したい行列データ+    * ''MATRIX'': ヒストグラム化したい行列データ (1次元データに変換される)
     * ''BINS'': ヒストグラムの幅     * ''BINS'': ヒストグラムの幅
       * int (整数) で指定すると分割数       * int (整数) で指定すると分割数
行 84: 行 112:
       * 1 番目の結果: ヒストグラム (''DENSITY = True'' の場合は確率)       * 1 番目の結果: ヒストグラム (''DENSITY = True'' の場合は確率)
       * 2 番目の結果: BINS       * 2 番目の結果: BINS
-  * ドキュメント: [[https://docs.scipy.org/doc/numpy-1.13.0/reference/generated/numpy.histogram.html | numpy.histogram — NumPy v1.13 Manual]]+  * 参考サイト:  
 +    * [[https://docs.scipy.org/doc/numpy-1.13.0/reference/generated/numpy.histogram.html | numpy.histogram — NumPy v1.13 Manual]] 
 +    * [[http://yakumido.blogspot.jp/2014/08/numpy.html | やくみ堂~砂漠から徒歩3分~: numpyとscipyのヒストグラム]]
  
  
 {{tag>プログラミング}} {{tag>プログラミング}}
  
  • python/numpy.1512530941.txt.gz
  • 最終更新: 2017/12/06 12:29
  • by mumeiyamibito