ぺーぱーの日々

上機嫌でいること、夢中でいることを目標に、今日も色んなことに手を出します。

MENU

arangeとarrayは別物ですか?

なんとなく、配列を生成するときに使っているarangeとarray。

意味も分からず、エラーが解消されるまでとりあえずどちらかを手当たり次第に実行していた。今考えれば、なんと頭の悪いプログラマー。。汗

 

アナログなやり方を抜け出したくて、プログラミングを学んでいるはずなので、それぞれをちゃんと理解する。

 

やりたいこと

numpyの配列生成の方法をマスターする

arangeとarrayは、なにをするためのものか

np.arange()

連番や等差数列(等間隔の配列ndarray)を生成するためのモジュール

np.array()

ベクトルを表す ndarray オブジェクトを作る

 

 

実装

下の2つは、実行結果が、どちらも[0 1 2 3 4 5 6 7 8 9]となる。

 

np.array()

print(np.array(range(10)))

np.arange()

print(np.arange(10))

0~9が格納されたリストをNumpy配列をつくるとき、

l = [0,1,2,3,4,5,6,7,8,9]

 

np.array()

print(np.array(l))

出力結果

[0 1 2 3 4 5 6 7 8 9]

 

np.arange()

print(np.arange(l))

出力結果

TypeError: unsupported operand type(s) for -: 'list' and 'int'

となる。

 

このことから、

  • np.array()は、<class 'numpy.ndarray'>を生成するためのもの。
  • np.arrage()は、連番の<class 'numpy.ndarray'>を生成するためのものであることがわかる。

 

文法の解説がされています。

NumPy 入門 — ディープラーニング入門:Chainer チュートリアル

 

まとめ

つづりが似ていて、日本語にしたときにそれほど差がない(ように思う)arangeとarray。どちらもnumpy型の配列(正しい言い方かわからないが、)をつくるためのモジュールであること、arangeはrangeという言葉が含まれているように、連続した番号を生成するためのモジュールであることを押さえれば、2つが別物であることは理解できる。プログラミング言語というぐらいだから、モジュールやデータ型の文字列を構成する接頭辞や接尾辞の意味を考えれば、どんなものなのかわかる。言語を扱ているという意識を持ち続けることが大切なのかもしれない。