2018年4月25日水曜日

プログラミング学習:numpyをつかって1から50までの自然数の和を計算する。(python GCI chapter2)

東大 GCIデータサイエンティスト育成講座演習コンテンツ Chapter 2の課題です。

1から50までの自然数の和を計算するプログラムを書いて、最後の計算結果を表示させるプログラムを書いてください。ただし、Numpyを使ってください。

まずはnumpyをインストール。以後、npとして呼び出しします。
import numpy as np

np.arangeで配列を作成
sample_array = np.arange(50)
sample_array
array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16,
       17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33,
       34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49])

np.arangeでは1つだけ数字を指定すると、0から指定した数字の1つ前までの連番配列を作ります。50なので、0から49までの配列ができました。

配列に1を足す
sample_array=sample_array+1
sample_array
array([ 1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16, 17,
       18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
       35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50])

sample_array+1で作った配列に1を足すと、全ての要素に1が足され、1から50の配列ができます。

あとはsum関数で要素全ての和を計算すればできあがり。
sum(sample_array)
1275

forループを使うよりすっきり簡単。

変数を使わなくても、printの中で計算することもできます。これだと1行で計算できる。
print(sum(np.arange(50)+1))
1275

最初から1から50の配列を作りたい場合はこのようになります。
np.arange(1,51)
array([ 1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16, 17,
       18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
       35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50])

1つめの因数が配列の始めの数字、2つ目が最後の数字+1になります。pythonでは、0から始まって指定した数の1つ前(51と指定すると50)で終わることに注意。これ、なかなか慣れずによく失敗します。

参考:
東京大学グローバル消費インテリジェンス寄付講座
http://gci.t.u-tokyo.ac.jp/
東京大学松尾研 GCIデータサイエンティスト育成講演習コンテンツ 公開ページ
http://weblab.t.u-tokyo.ac.jp/gci_contents/
プログラミング学習:東京大学のデータサイエンティスト育成講座(GCI)の演習コンテンツ
https://eneprog.blogspot.com/2018/04/python10gci-chapter1.html
プログラミング学習:10までの素数を表示させる。(python GCI chapter1) https://eneprog.blogspot.com/2018/04/python10gci-chapter1.html

0 件のコメント:

コメントを投稿

//SyntaxHighlighter CDNより https://cdnjs.com/libraries/SyntaxHighlighter // 対応言語