計算なんて必要ない!計算はパソコンにお任せ!numpy学習第2回

計算なんて必要ない!計算はパソコンにお任せ!numpy学習第2回

家の近所を、よく灯油販売車が巡回しています。

茶目っ気のある軽快な音楽と共に、女性の声で「灯油、リッター○○円」というナレーションが室内にも聞こえてくるのですが、必ず最後に「勇気を出してお待ちください」と入るため…

「フフッ…灯油が欲しいだと?欲しければくれてやる…俺を倒すことが出来ればな!!」

とのたまう筋骨隆々の親父に吐くまでボッコボコにされるのかと思っていましたが、冷静に考えれば「容器を出してお待ちください」でした。

アイーンです。

 

今回も引き続き、numpyの解説を行っていきます。

それではいきましょ~

 

リストの中身の確認

 

まずは

a = np.arange(42).reshape(6,7)

と入力し。6行7列のリストを作ります。

コレに対して

print(np.shape(a))

と入力すると、aというリストが?行?列かが分かります。

また

print(np.size(a))

と入力すると、リストの中に何個データが入っているかを表示できます。

 

深層学習では、記述されたコード内で何度もリストを追加したり削除したりするため、このコードで、現在のリスト数等の情報を見たり、他の操作に用いたりできます。

また

row(行)やcolumn(列)といった変数にデータを渡しておくと、個別に表示が可能です。

 

お手軽!リストの作り方

今度は、np.zeros()を使ってみましょう。

b = no.zeros(10) 

と入力すると、中身が全て0で出来たリストが作れます。

また

c = np.ones(10)

と入力すると、中身が全て1で出来ます。

 

他にも

d = np.random.rand(10)

では、0~1の間で乱数を10個作ります。

このコードの書き方は

「np(numpy)の中の、randomモジュールに入ってる、rand()メソッドを使います」

という書き方です。

.(ドット)がポイント。

また、下のように

np.random.permutation(range(10))

と入力すれば

0~9までの10個をランダムに並び替えてリストを作れます。

実はこのランダムな要素が、レベルの高い深層学習に使われることになります。

他にもrandn()randint()等の種類が豊富!

いや~、numpyって本当に良いものですね。

 

切って貼って変えて、リストの加工

それではリストの加工をやってみましょう。

f = np.arange(6).reshape(2,3)

g = np.arange(6).reshape(2,3)

と、同じリストを2つ、別の変数に作ります。

これをくっつけてみましょう。結合操作です。

h = np.hstack([f,g])

を入力すると、見ての通り横に繋がります。

hstackのhはhorizon(横)という意味です。

 

ならば…

i = np.vstack([f,g])

と入力すれば、縦にくっつきます。

vはvertical(垂直)ということです。

 

それでは次の実験に行きましょう。

何度も書いて飽きてきましたが、今度は

a = np.arange(20).reshape(4,5)

で4行5列の20個データが入ったリストを作ります。

さぁ、行(横)を個別に取り出してみましょう。

f = j [ [ 0 , 3 ] , : ]

 

後ろにコロンを付けると、を取り出してくれます。

これは0行目と3行目を取り出しています。

 

次は列(縦)です。

g = j [ : , [ 0 , 2 , 4]]

前にコロンで列操作ですね。

0列目、2列目、4列目が取り出されました。

 

じゃあ最後はjのリスト内をまとめて変更しちゃいましょう。

j [ j % 2 == 0] = 0

jの中身でjを2で割ったとき余りが0になるものを0に変更する。

言い換えれば

jの中の偶数を0にする。

という操作です。

このように、中身の変更すら簡単に出来るんですね。

 

 

これで貴方の肩書は「numpy中学校卒業」です。

大阪のオバちゃんに「numpy中卒の○○です」と名乗りましょう。

アメちゃんくれます。

 

プログラミングは、いじってナンボ。

実際に触って覚えるのが一番早い。というか触んないと覚えない。

日々精進していきます。

ではまた。