両方とも前のリビジョン 前のリビジョン 次のリビジョン | 前のリビジョン |
python:numpy [2017/12/06 11:43] – mumeiyamibito | python:numpy [2019/01/29 10:34] (現在) – mumeiyamibito |
---|
* ''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次元配列から任意の列を抽出する方法 - おいも貴婦人ブログ]] |
| |
* テスト用などに使えるかも。 | * テスト用などに使えるかも。 |
* 小数の行列 (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 になる。破壊的なメソッドなので、元の行列は残らない。 |
| |
| === ゼロ行列の作成 === |
| * 要素すべてが 0 の行列の作成\\ <code python>MATRIX = np.zeros(SHAPE, dtype = TYPE)</code> |
| * ''MATRIX'': ゼロ行列を格納する変数 |
| * ''SHAPE'': 行列のサイズ (多次元にする場合はタプルで指定する) |
| * ''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]] |
| |
| === 行列全体のキャスト === |
| * 行列全体のデータ型を変える。\\ <code python>NEW_MATRIX = MATRIX.astype(TYPE)</code> |
| * ''NEW_MATRIX'': データ型変換後の行列データを格納する変数 |
| * ''MATRIX'': 変換したい行列データ |
| * ''TYPE'': データ型 |
| * ''np.float'': 浮動小数点型 |
| * ''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 (整数) で指定すると分割数 |
* 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>プログラミング}} |
| |