【Python】NumPy配列のインデックスと値の指定選択

NumPy
スポンサーリンク

初心者の独学でのプログラミング学習はとてもツライ…

プログラミングをマスターしたい!

今のIT業界はプログラミングエンジニアが不足していると言われています。
高収入の職業とも言われる分野もありますし、AI、機械学習、ディープラーニング、IOTといった注目される分野が目白押しです。

でも、いざ初心者がプログラミングをマスターしようとすると…

  • 本を読んだりネットの記事で自力で勉強しているけど限界を感じる
  • プログラミングスクールに定期的に通うのは面倒だ
  • 地方に住んでると家の近くにプログラミングスクールなんてない
  • どのプログラミング言語を学べばいいのか悩む
  • 実際の就職や転職にプログラミングが活かせるのか心配だ

など、プログラミングを自分で勉強しようとすると悩みが尽きません。

プログラミングに詳しい友人に教えてもらおうと思っても、そんな友人なんて滅多にいません。いたとしても細かく教えてくれるほど時間に余裕がある人はいないでしょう。

そんな独学でプログラミングをマスターするのに限界を感じてる方に、オンラインプログラミングスクールをがおすすめです。

おすすめのオンラインスクールはこちら

これまで、PythonのNumPyを使って配列を作る方法を学びました。

次はこの配列の個々のデータのインデックスと値の選択、配列をスライスしての選択などをみていきたいと思います。

配列を作る方法に自身がなければ、もう一度復習しておきましょう。

【Python】NumPyで配列を作る - NumPy Arrays
ここではPythonの拡張モジュールのNumPyを使って配列を作る操作を中心にみていきます。array(), arange(), zeros(), ones(), linspace(), eye(), randomモジュールなどを扱います。

では、配列のインデックスから学んでいきましょう。

スポンサーリンク

配列のindexの操作

jupyter notebookを使って、コードを見ていきたいと思います。

まずはNumPyのインポートと、配列を作ることから始めます。

arrという変数に配列を入れています。

このarrを使って、配列のインデックスについて見ていきます。

配列のインデックス

Pythonのリストのでは、リストを代入した変数に角括弧を続けて、その中に取り出したいインデックスを指定すると、値が取り出せました。

【Python入門】リストの作成。インデックスと要素と操作
Pythonのリストについて学びます。角括弧で要素を囲むことでリストが作成でき、インデックスを使って要素を取り出したり、削除したり、オフセットを指定してスライスしてみましょう。リストを要素に持たせて入れ子構造のリストも作ってみましょう。

これと同様な操作をNumPyの配列(array)でも行うことがでます。

先ほど作ったarrを使ってやっていきましょう。

配列もリストと同様に0から始まるインデックスを当てはめることができます。ここではインデックスの5を指定しています。

実行するとこういう結果が得られます。

配列の先頭から6番目の値が出力されているのがわかります。

配列の範囲指定とスライス

配列のスライスも、Pythonリストの時と同じように範囲指定して取り出すことができます。

コロン(:)でインデックスを挟んで範囲を指定します。0から始めるか指定せずにコロンで区切ると先頭から、値がとり出されます。コロンの後ろ側は指定したインデックスの前の値となります。

しっかり、インデックスの位置と見比べるとどうスライスされているかわかると思います。

スライスで範囲指定して値を代入すると配列の中身を変更することができます。

先頭からインデックス5の手前まで(5つ目まで)の値に10を代入しています。

配列の値が変わっているのがわかります。

スポンサーリンク

配列のスライスとコピー

あらためて配列を作り直します。

この配列を次のように範囲指定してスライスします。

このスライスした配列の値を次のように変更してみます。

ここまでは先ほどやったことと同様なことですね。

これで、もとの配列を見るとこうなっています。

配列をスライスして取り出した部分の値を変えると、元の配列の部分も値が変わってしまっているのがわかります。

配列のスライスは、別の配列が作られる訳ではなく、元の配列の位置をそのまま参照しているということになります。

copy() – 元の配列はどうなる?

先ほどの例でいうと、配列がコピーされている訳ではないということになります。そこで配列をコピーしてみましょう。配列のコピーはcopy()を使って作ることができます。

先ほどのarrをコピーしてみましょう。

コピーした配列をarr_copyとしています。arrと並べて表示してみます。

どちらも同じ値の配列になっています。

では、このarr_copyを、次のように値を変えてみます。

全ての値を100に変更した配列になります。

このとき、コピー元のarrはどうなっているでしょうか?

合わせて出力してみます。

arrは元のままです。単にスライスして値を変えただけでは元の配列の値も変わってしまいますが、copy()を使うと別の配列として操作することができるのこれでがわかります。

スポンサーリンク

2次元の配列の操作

これまでの操作は1次元の配列の操作でした。

では2次元の配列を作ってみましょう。

3行3列の配列は次のように作ることができました。

arr_2dimという変数に配列を入れています。

インデックスを指定して取り出すことができます。

これは行データを取り出しています。

1行目の配列が取り出されます。

個々の値も次のようにして行のインデックスを指定し、列のインデックスを指定すれば取り出すことができます。

最初が行のインデックス、次が列のインデックス。この位置のデータが出力されます。

これは次のように書くことでも同じ操作ができます。

値だけでなく、配列も同様です。

こちらのやり方の方が、内部的な処理が早いと言われています。

スポンサーリンク

配列と比較演算子

配列は、比較演算子を使って比較の判定を行うことができます。

再度、配列を作り直してみます。

この配列の中で5より大きい値を判断するには、次のようにして行うことができます。

これはTrue/Falseで結果が出力されます。

5以下のインデックスの位置がFalse、越えている部分はTrueと表示されているのがわかります。

これは、次のように比較してTrueの値の部分を取り出すことができます。

最初のようにbool値を判定した変数を使ってもいいですし、そのまま比較演算子を使ってもいいです。

スポンサーリンク

配列の形状変換とインデックス操作

2次元の配列の操作は行いましたが、おさらい的に配列の形状変換とインデックス操作をまとめてみます。

arange()を使って整数を与え、これをreshape()で2次元の配列を作ります。

0から49の整数を使って、5行10列の配列を作ります。

データの数が揃うように値を与えなければいけません。

次のように配列が作られます。

スライスを使って、これまでと同様に取り出すことができます。

行の位置、列の位置を付き合わせて、どうスライスされているのか確認してみましょう。

スポンサーリンク

最後に

ここではPythonの拡張モジュールのNumPyを使って配列のインデックス操作を見てきました。

Pythonリストの操作と同様な操作でインデックスを指定して、配列の値を取り出したり、スライスすることができます。

copy()と元の配列との関係の違いもしっかり理解して起きたいところです。

自宅学習はオンラインプログラミングスクールを活用!

自宅学習にはオンラインプログラミングスクールがおすすめ!

オンラインプログラミングスクールは独学でプログラミングを学習する時のデメリットを解消する仕組みが備わっています。

気になるところは…

学習がオンラインで完結するのはもちろんですが、独学ではできない質問サポートがあるかどうか。わからないことを現役のエンジニアが質問に答えてくれるといいですよね。

受講者個人に担当のメンターがつき、マンツーマンで学習の相談に乗ってくれることも必要で、ITエンジニアの世界についても伺えたりもすると幅が広がります。

オンライン面談だけでなく、チャット機能を使って気軽に質問を投げかけることができることも大切です。

また、オリジナルプロダクトの開発とサポートがコースの中に組み込まれていて、独学ではなかなか難しい実践的なスキルの習得にもつなげたい。

プログラミングをマスターした後の実際の仕事につながる転職サポートでがあると、ITエンジニアの世界に飛び込むのに不安が解消されます。

そんな豊富なメニューが揃っているおすすめのオンラインプログラミングスクールがこちらにあります。

おすすめのオンラインプログラミングスクールはこちら

TechAcademyはおすすめのオンラインプログラミングスクール!

オンラインのプログラミングスクールでは、テックアカデミーの充実度が目を見張ります。

オンラインで受講が完結するので、自宅学習でプログラミングをマスターしたい人にはテックアカデミーがおすすめです。

メンター制度も現役のプロが対応してくれます。大学生などが対応しているスクールに比べて本気度と専門性が違います。メンター制度の無いスクールもありますし、担当では無いメンターが対応するスクールもあったりするので、相談の質が違いますね。

チャットサポートもあるので、それが無いスクールに比べて相談の気軽さの違いがあります。

プロダクト開発のサポートで実践力が養われるだけでなく、どの講座を利用しても転職サポートが受けられるのはありがたい。

用意されているコースも、初心者向けのプログラミングコースから、Python、Java、PHP、iPhoneアプリ、AndroidといったITエンジニアのベースとなる主要な言語だけでなく、AI、データサイエンス、ブロックチェーン、webアプリケーションと行った実践的なコースまで用意しています。

他にも、webデザインやUI/UXデザイン、動画編集、webディレクションやwebマーケティングといったプログラミング以外での役立つコースまであります。

このようなたくさんの選択肢から自分にあったコースを選ぶことがでるのがテックアカデミーです。

コースの期間も短期間でマスターしたり、長期の受講でじっくり取り組むコースを選ぶこともできます。

複数講座のセットコースを利用することで大幅な割引が受けらるので、お得に受講することもできます。

無料体験もありますので、プログラミング学習でオンラインスクールを考えている人はTechAcademyをぜひ利用してみてください。

テックアカデミーの公式サイトはこちら

タイトルとURLをコピーしました