NumPy は、Python で線形代数演算の高速化を可能にするライブラリで、統計解析や人工知能など、
すぐにでも活用できます。
NumPyを身につけるには、サンプルコードを写経するのもおすすめです。
いろいろな初期値を使い、サンプルコードを動かすことで、学びたいアルゴリズムの挙動をより理解することができます。
なので、NumPyの習得には、初期値の生成方法を知っておくのが役立ちます。
よく使われるものとしては、以下のものがあります。
- 要素がすべてゼロの行列
- 要素がすべてイチの行列
- 対角要素だけ1で他が0の単位行列
これらの行列をサクッと生成できると、NumPyの勉強がはかどります。
また、
- 行列をより高速に生成する方法
があると、本番の高速計算に役立ちます。
前の記事でゼロ行列の生成方法について、サクッとわかりやすくまとめました↓
『【Python NumPy】ベクトル・行列の生成・初期化方法(1):ゼロ行列 zeros、zeros_likeについて、サンプルコードとともに、サクッとわかりやすく、まとめました【Python 入門】』
本記事では、
ベクトルや行列の生成・初期化のやり方の1つ、
- 要素すべて1の配列を作る方法
について、わかりやすく、サクッとまとめたいと思います。
【Python NumPy 独学】ベクトル・行列の生成・初期化方法(2):すべて要素1の行列 ones、ones_likeについて、サンプルコードともに、サクッとわかりやすく、まとめました【Python 入門】
(1), 「イチ行列」の行列生成方法:ones
「イチ行列」とは、すべての要素が1の行列です。
(厳密にはイチ行列という言い方はないかと思います。ここでは便利のため使いました。)
イチ行列は、ones( ) メソッドで生成できます。
かっこの中に、1の数を入れて実行します。
5個の1を持つベクトルを生成するには、
以下のようにします。
1次元配列(ベクトル)の生成
デフォルトでは、1は浮動小数点数型で出力されています。
もし、整数型の1を使いたければ、以下のように「dtype」 を使います。
「dtype = int」とすることで、整数型のゼロを出力させることができます。
(ちなみに dtype は、data type データ型 の意味になります)
2次元以上の配列(行列)の生成
2次元や3次元のイチ行列も、以下のように、
生成することができます。
2次元なら、ones ( ) メソッドの中に、
2つの次元の要素数をタプルで書けばオッケーです。
3次元なら、3つの次元の要素数をタプルで書いて生成します。
ちなみに、多次元のアレイが何次元が知りたい時には、
変数名を打ち込んでみて、表示された内容の
アレイのすぐ横の「【 」を数えればオッケーです。
上の3次元の例では、「array( 【【【 」と、
3つの「【」が並んでいます。なので3次元です。
4次元、5次元・・・などの場合も同様に調べることができます。
(2), 「イチ行列」の行列生成方法:ones_like
上の例では、イチが何個かを指定する必要がありました。
そうではなく、
- 要素数を指定せずにイチ行列を生成する
方法「ones_like」メソッドがあります。
既存のベクトル・行列と形のゼロ行列を作りたい時に使えます。
In [16] では、1〜5の要素を持つ配列 array4 を定義しています。
In [10] の
np.ones_like (array 4)
のように、ones_likeメソッドに array4 を渡すことで、
- array4 と同じ形の配列を生成する
ことができます。
同様に、2次元でも
np.ones_like ( 2次元配列 )
のように、2次元の行列を渡すことで、2次元のゼロ行列を生成することができます。
3次元以上の多次元で同様に作成することができます。
このように、ones_like( ) メソッドを使うことで、
- 要素数を指定せずにゼロ行列を生成する
ことができます。
また、ones_like () メソッドでも、
ones( ) メソッドと同じように、
データ型を指定したい時には、dtype を使うこともできます。
np.ones( ), np.ones_like の活用事例とは?
随時追加していきます。よかったらフォローなどしておくと見逃さないかと思います。
というわけで、本記事では、
- 要素すべてイチの配列を作る方法
をサクッとまとめました。
こちらの記事もございます↓
第3弾では、単位行列の生成方法について解説しました↓
『【Python NumPy】ベクトル・行列の生成・初期化方法(3):単位行列の生成( identity、eye)について、サンプルコードとともに、サクッとわかりやすくまとめました【Python 入門】』
第4弾では、より高速に行列を生成する方法を解説しています↓
『【Python NumPy】ベクトル・行列の生成・初期化方法(4):高速な配列の生成方法(empty)について、サンプルコードとともに、サクッとわかりやすくまとめました【Python 入門】』
こちらもございます↓
「Numpy」については、こちらの書籍でも解説しています(無料)↓