なんとなく、配列を生成するときに使っている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つが別物であることは理解できる。プログラミング言語というぐらいだから、モジュールやデータ型の文字列を構成する接頭辞や接尾辞の意味を考えれば、どんなものなのかわかる。言語を扱ているという意識を持ち続けることが大切なのかもしれない。