こんにちは!インストラクターのフクロウです!
Pythonの行列計算ライブラリNumPyでは配列を初期化する関数がたくさんあります。その中から、この記事では配列の全要素を1で初期化するnp.ones関数について紹介します。
また、配列を0で初期化するnp.zeros関数については、以下の記事で解説しています。
np.onesの引数と返り値
numpy.ones
(shape, dtype=float, order=’C’)
shapeとdtype(要素の型)を指定して、1で埋められた配列を返します。
Parameters: |
|
---|---|
Returns: |
|
使い方
jupyter-labやjupyter-notebookを使って、以下のコードを試してみてください。
import numpy as np
基本的な配列の作り方
第一引数に新しく作りたい配列のshapeを指定すれば、簡単に配列が作成できます。
x = np.ones(5)
x
配列の情報をまとめて見るために、以下の関数を作っておきましょう。
def array_info(x):
print("配列のshape", x.shape)
print("配列の要素のデータ型", x.dtype)
print("配列の中身n",x)
また、前述の通り、dtypeを指定していない場合は、float64型になることがわかります。
array_info(x)
x2 = np.ones((4,3))
array_info(x2)
三次元配列も同様にタプルでshapeを指定して作ります。
x3 = np.ones((4,3,2))
array_info(x3)
要素の型を指定して配列を作る方法
dtypeというパラメータに、numpy.float32などの型を指定することで、任意の型で1初期化できます。
x4 = np.ones(3, dtype=np.int16)
array_info(x4)
真偽値(bool)でも可能です。この場合は1の代わりにTrueで埋められた配列ができます。
x5 = np.ones(3, dtype=np.bool)
array_info(x5)
ある配列と同じshapeの1初期化配列を作るnp.ones_like
np.onesと似た関数に、np.ones_like関数があります。この関数は第一引数にshapeではなく、shapeを真似たい配列を指定してあげると、np.onesと同じように1初期化した配列を作ってくれます。
x6 = np.ones_like((x3))
array_info(x6)
np.onesとnp.ones_likeのように、np.zerosにもnp.zeros_likeという同様の動作をする関数が用意されています。
まとめ
この記事ではNumPyで1初期化した配列を生成する関数、np.onesとnp.ones_likeを紹介しました。
NumPyは高速に行列計算を行うためには必須のライブラリです。この記事で配列の初期化を勉強して、様々な科学計算の実装・機械学習の実装に挑戦してみてください!
今回の記事は下記の記事を参考にしています。
参考記事: