Pythonのライブラリの1つであるNumPyには、配列を初期化するための関数がいくつか用意されています。
今回はその中から、配列の全要素の値を0で初期化する 「zeros関数」 について、詳しい使い方を解説していきたいと思います。
配列の値を0で初期化する意味・メリット
Numpyは、Pythonでの数値計算を効率よく行えるようにしてくれるライブラリであり、科学技術計算やデータ分析を行う際には欠かせないツールとなっています。
上記のような複雑な計算を行う際に、計算に使用する配列を事前に初期化しておく必要があるケースも中にはあります。
特定の大きさの配列を前もって準備しなければいけない場面などにおいて、zeros関数を含む初期化用の関数は非常に役立ちます。
また一般的に、初期化されていない状態の配列を使用することは、意図しないエラーを発生させる原因にもなり得るため、事前に初期化をしておくことはリスク回避にも繋がります。
他にも、明示的に初期化を行うことで、配列を使用する意図を明確にすることもできるため、チーム開発を行う際のコード解読の手助けになったり、修正時のリスク軽減に繋げることもできます。
zeros関数は、作成する配列の形状 (大きさや要素の型) を指定するだけで初期化できるため、一定の値に揃えた配列が必要な場合に効率的にコードを書くことができます。
np.zerosの基本構文と引数・返り値
zeros関数の実際の使い方を確認する前に、記述する際の基本構文や引数・返り値について解説します。
zeros関数を使用する際の基本構文は、以下のように記述します。
【基本構文】
numpy.zeros(shape, dtype, order)
zeros関数で指定できる引数は、shape, dtype, orderの3つです。
【shape】
作成する配列の次元数や要素数を指定します。
1次元配列の場合は要素数のみを、2次元以上の配列の場合は次元数と要素数をタプルで指定します。
例: 5、 (2,3) など
【dtype】
格納する要素のデータ型を指定します。(オプションのため、指定しなくてもOK)
デフォルトでは浮動小数点型 (float64) となっています。
例: dtype=int 、dtype=bool など
【order】
配列のメモリレイアウトを指定します。(オプションのため、指定しなくてもOK)
多次元配列を 「’C’ (C-style、行優先 )」 と 「’F’ (Fortran-style、列優先)」 のどちらでメモリに格納するかを選択することができます。デフォルトは ’C’ です。
例: order=’F’
指定した引数の内容に沿って、要素の値を0で埋めた ndarrayが返却されます。
np.zerosの使い方
ここからは、zeros関数の実際の使い方について、サンプルコードを交えながら解説していきます。
基本的な配列の作成
まずは、最も基本的な例から見ていきましょう。
zeros関数を使用する際は、第1引数に作成したい配列の大きさを指定して初期化を行います。
【サンプルコード】
import numpy as np
sampleArray = np.zeros(5)
print(sampleArray)
【実行結果】
[0. 0. 0. 0. 0.]
引数にタプルを渡すことで、多次元配列も簡単に初期化できます。
【サンプルコード】
import numpy as np
sampleArray = np.zeros((3, 5))
print(sampleArray)
【実行結果】
[[0. 0. 0. 0. 0.]
[0. 0. 0. 0. 0.]
[0. 0. 0. 0. 0.]]
同様に、タプルを使用して3次元以上の配列を作成することも可能です。
【サンプルコード】
import numpy as np
sampleArray = np.zeros((2, 3, 5))
print(sampleArray)
【実行結果】
[[[0. 0. 0. 0. 0.]
[0. 0. 0. 0. 0.]
[0. 0. 0. 0. 0.]]
[[0. 0. 0. 0. 0.]
[0. 0. 0. 0. 0.]
[0. 0. 0. 0. 0.]]]
このように、基本的には配列の大きさを指定するだけで簡単に作成と初期化を同時に行うことができます。
要素の型を指定して配列を作成する
前述の通り、作成される配列の要素の型は、デフォルトでは float64 となっています。
他の型で要素を格納したい場合は、引数の dtype に任意の型を指定しましょう。
【サンプルコード】
import numpy as np
sampleIntArray = np.zeros((3, 5), dtype=int)
print(sampleIntArray)
【実行結果】
[[0 0 0 0 0]
[0 0 0 0 0]
[0 0 0 0 0]]
指定する型には、数値以外にも真偽値 (bool) を指定することも可能です。
真偽値の場合は、False で埋められた配列が作成されます。
(プログラミングでは基本的に 0 を False、1 を True として扱うため)
【サンプルコード】
import numpy as np
sampleBoolArray = np.zeros((3, 5), dtype=bool)
print(sampleBoolArray)
【実行結果】
[[False False False False False]
[False False False False False]
[False False False False False]]
別の配列と同一のshapeを持つ初期化配列を作るnp.zeros_like
Numpyには、zeros関数と似た機能を持つ zeros_like関数があります。
配列の要素の値を0で初期化してくれる点は同じですが、zeros関数が任意の形状を指定して配列を作成するのに対し、zeros_like関数は既存の配列と同じ形状の配列を新たに作成します。
以下のサンプルコードで動きを見てみましょう。
【サンプルコード】
import numpy as np
sampleArray = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
resultArray = np.zeros_like(sampleArray)
print(sampleArray)
print(resultArray)
【実行結果】
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
[[0 0 0]
[0 0 0]
[0 0 0]]
結果を見ると、引数に指定した配列と同じ大きさと型で、新たに配列が作成されているのが分かると思います。
配列の大きさを変更することはできませんが、要素の型に関しては zeros関数と同様に dtypeで任意の型を指定することができます。
【サンプルコード】
import numpy as np
sampleArray = [1, 2, 3, 4, 5]
resultArray = np.zeros_like(sampleArray, dtype=bool)
print(sampleArray)
print(resultArray)
【実行結果】
[1, 2, 3, 4, 5]
[False False False False False]
まとめ
いかがでしたか?今回は、zeros関数の使い方について解説しました。
NumPyは、数値計算を行う上で非常に役立つ便利なライブラリです。
zeros関数を含む様々な機能について、扱い方に慣れておくことをオススメします。
Pythonの勉強方法は?
書籍やインターネットで学習する方法があります。昨今では、YouTubeなどの動画サイトやエンジニアのコミュニティサイトなども充実していて多くの情報が手に入ります。
そして、より効率的に知識・スキルを習得するには、知識をつけながら実際に手を動かしてみるなど、インプットとアウトプットを繰り返していくことが重要です。特に独学の場合は、有識者に質問ができたりフィードバックをもらえるような環境があると、理解度が深まるでしょう。
ただ、Pythonに限らず、ITスキルを身につける際、どうしても課題にぶつかってしまうことはありますよね。特に独学だと、わからない部分をプロに質問できる機会を確保しにくく、モチベーションが続きにくいという側面があります。独学でモチベーションを維持する自信がない人にはプログラミングスクールという手もあります。費用は掛かりますが、その分スキルを身につけやすいです。しっかりと知識・スキルを習得して実践に活かしたいという人はプログラミングスクールがおすすめです。
プログラミングスクールならテックマニアがおすすめ!

ITスキル需要の高まりとともにプログラミングスクールも増えました。しかし、どのスクールに通うべきか迷ってしまう人もいるでしょう。そんな方にはテックマニアをおすすめします!これまで多くのITエンジニアを育成・輩出してきたテックマニアでもプログラミングスクールを開講しています。
<テックマニアの特徴>
・たしかな育成実績と親身な教育 ~セカンドキャリアを全力支援~
・講師が現役エンジニア ~“本当”の開発ノウハウを直に学べる~
・専属講師が学習を徹底サポート ~「わからない」を徹底解決~
・実務ベースでスキルを習得 ~実践的な凝縮カリキュラム~
このような特徴を持つテックマニアはITエンジニアのスタートラインとして最適です。
話を聞きたい・詳しく知りたいという方はこちらからお気軽にお問い合わせください。