しろちゃのプログラミング日記

プログラミング初心者が勉強したことを書き留めるブログ

Pythonモジュール・ライブラリ!Numpy編3(値の取り出し)

はじめに

この記事では、Pythonの外部ライブラリNumPyの基本情報を紹介しています

前の記事はコチラ↓
ai-shirocha.hatenablog.com
ai-shirocha.hatenablog.com

今回の記事では、Numpyのインデックスやスライス(値の取り出し)についてです


なお前回から各用語の記述は引き継ぎます

「NumPy」は「Numpy」、

Numpyに使われるタプル型を「npリスト」として記述します


ライブラリの読み込みについては省略しています


記事の作成には以下のサイトを参考しました

Quickstart tutorial — NumPy v1.18.dev0 Manual



一次元配列の配列

一次の配列については、

扱いはほとんどPythonの配列と同じです


まず配列を作ります

>>> a = np.arange(10)**3
>>> print(a)
[  0   1   8  27  64 125 216 343 512 729]

0から10未満の数字を各3乗しました

コード例は以下の通りです

#インデックス番号2、3、4を取り出す
>>> print(a[2:5]) 
[ 8 27 64]

順番に取り出されています


もう一つコロンを追加することで

スキップしながら取り出すことも可能です

#インデックス番号0、1、2、3、4、5、6の中から、3つに1つを1000に更新する
>>> a[0:7:3] = 1000 
>>> print(a)
[1000    1    8 1000   64  125 1000  343  512  729]

[ ]に囲まれた数字の意味はそれぞれ

「最初のインディックス:最後のインディックス+1:いくつごとに取り出すか」

となります


それぞれの値を空白にすることも可能です

その場合、自動で次の値が割り当てられます

「0:最大のインデックス番号+1:1」

また、値に負の値を設定することも可能です

#全体を-1ごとに取り出す
>>>print(a[::-1])
[ 729,  512,  343, 1000,  125,   64, 1000,    8,    1, 1000]

つまり、リストの順番が逆になります


多次元の配列

多次元の配列の場合、

インディックスはその次元の数だけの要素を持ったタプルとして与えられます


二次配列

例えば二次の配列の場合、次のようになります


まず配列を作成します

>>> a = np.arange(12).reshape(3,4)
>>> print(a)
[[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]]

要素の数には12を指定し

「reshape」を使って2次配列を作成します

>>> print(a[1,2])
6

こんな感じです

順序は[縦,横]となることに注意してください


一次配列と同じように、

コロンを使って範囲を指定することもできます

#インディックスは縦0、1横3を指定し取り出す
>>> print(a[0:2,3])
[3 7]

また、値の省略も可能です

その場合、省略された値は完全なスライスとして扱われます

つまり全部ってことです

>>> print(a[1,:])
[4 5 6 7]
>>> print(a[1])
[4 5 6 7]

こんな感じですね


もちろん三次元以上の配列も存在します

例として三次元配列を作成します

体積をイメージすると分かりやすいです


もちろん四次元配列も五次元配列もありますが

しろちゃの手に負えないため三次となります

>>> b = np.arange(60).reshape(3,4,5)
>>> print(b)
[[[ 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]
  [50 51 52 53 54]
  [55 56 57 58 59]]]

まずは配列を作成しました

さすがに分かりにくいですね

並んでいる二次配列が平らになって重なってるイメージです

縦3x横4x奥5のイメージです

f:id:ai_shirocha:20191122152142p:plain
これは立方体です・・・

スライス

さてさて、スライスを始めましょう

>>> print(b[:,:,0])
[[ 0  5 10 15]
 [20 25 30 35]
 [40 45 50 55]]

手前を縦に文字通りスライスした感じですね

f:id:ai_shirocha:20191122154721p:plain
スライス!スライス!

また、この連続した「:,」は「...」として記述することも可能です

>>> print(b[...,1])
[[ 1  6 11 16]
 [21 26 31 36]
 [41 46 51 56]]

レーズン食パン二枚目です

ちなみに私はレーズンは嫌いです

繰り返し

みんな大好きfor構文

この場合、繰り返しは最初の軸に関して行われます

具体例は以下の通りです

>>> for i in b:
              print(i)
    
[[ 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]
 [50 51 52 53 54]
 [55 56 57 58 59]]

なにやらたくさんあってびっくりしますが

x = 1
>>> for i in b:
              print(x)
              x += 1    
1
2
3

繰り返ししている回数は三回のようです

すべての要素を繰り返す属性「flat

・・・属性ってなんだろう?

全部の要素に対して繰り返しを行う場合、

下記のように記述してください

>>> for element in b.flat:
              print(element)    
0
1
2
3
(中略)
57
58
59

こんな感じです


まとめ

今回の記事ではNumpyのインディックスやスライスの方法を紹介しました

だいぶ疲れたのでNumpy嫌いになりそうです

てかあと半分くらいあるんだけどどうすればいいの・・・?

Spyder基本操作!レイアウト変更編

はじめに

この記事では、Anacondaの中に入っているSpyderの基本操作について紹介します

今回はレイアウト編です

前回の記事はコチラ↓
ai-shirocha.hatenablog.com


Spyderの外観を自分好みに変更していきます


さすがにコンソールなんていらねえという猛者はいないとは思うのですが

使わない機能は表示されていても邪魔なだけですし


レイアウトの呼び出し

Spyderには、いくつかのレイアウトが予め保存されています

自分で考えるのがめんどくさいという人はこれをそのまま使ってもいいですし

ここからさらに細かく設定していくのもおすすめです


「表示(V)」から「ウィンドウレイアウト」にカーソルを合わせてください

おそらく良く分からない英語が4つほど出てくると思います

それぞれをクリックすると、レイアウトがガラッと変わります

色々試して、気に入ったのを探してください


各ウィンドウの配置変更

各ウィンドウの比率を変える

ウィンドウの境目にカーソルを合わせることで

変わった矢印が現れます


クリックしたまま引っ張れば、

ウィンドウの境目の位置をずらすことができます

ウィンドウの移動

やっぱりコンソールは上に来てほしい!

そんなときに便利な技です

技というか、普通にドラッグするだけですが


移動させたいウィンドウの右上に、

四角が二つ重なったようなマークがあると思います

それをクリックしてください

場所としては、歯車マークの上あたりです


するとウィンドウが浮き上がって、移動できるようになります

そのままドラッグするとびゅんびゅん動かせます

とても楽しいですね!


しかし、ただ楽しんでいても仕方ないのでさっさと置きましょう

ウィンドウの移動先は、水色で表示されている場所になります

持って行きたいところに近づければ、

勝手に道をあけてくれます


我儘なウィンドウは思わぬ場所に入りたがったりしますが、

諦めなければいずれ気持ちが伝わります

頑張ってください


ちなみに、元あるウィンドウの上に重ねると

タブで切り替えられるようになります

デフォルトレイアウトの右上みたいな感じです


ウィンドウの削除

不必要なウィンドウはさっさと消してしまいましょう

ワンクリックです

右上のxをクリックするだけ


ウィンドウを動かす際に押した、

二つの四角の横にあるものです


超簡単です・・・

迷惑なくらいに・・・・・・


ウィンドウの追加

ウィンドウの削除が簡単すぎるせいで、

意図せずウィンドウが消えてしまうという悲しい事態も発生します

気づけばSpyderの画面がスプリクトファイル一色に…なんて…(経験談


しかも、私の把握する限り特定のウィンドウを追加する方法はありません

しろちゃの知らないところにあるのかもしれませんが

少なくとも今の私には分からないのです


しかし希望はあります

デフォルトの設定に戻せばいいんです!!

つまり、前述した方法でレイアウトを呼び出してください

これで編集をリセットすることができ、

消えたウィンドウも帰ってきます


構文強調の配色

print(str(2))

Spyderには、

こんな感じで構文が現れると色を変えて強調してくれる便利な機能があります

この配色の設定方法を紹介します


上部の「ツール(T)」から

設定をクリックし開いてください


設定の中から「構文強調の配色」を選択

「スキーム」項目を変更しましょう

デフォルトで「Spyder」となっているところです


色々クリックすると様々にテーマを確認できますので

お気に入りを見つけたら「適用」してください


既存スキームの編集

「あとはここさえ変わってくれれば…」

そういう時には「選択を編集」から

詳細な配色を変更することができます


編集したい項目に任意のカラーコードを入力し

B、I、設定したい方にチェックを入れてください

Bにチェックすると太字に

Iにチェックを入れると斜体になります


編集が終了したら、「OK」で確定!

その後「適用」してください


スキームの作成


なお、自分でスキームを作成することもできます

「新しいスキームを作成」をクリックしてください

既存のスキームを編集するときと同じような画面が現れます


操作も先ほどとほぼ同じですが

スキームの名前を自分で設定することができます


背景を黒くし

文字の強調を紫や緑にするとちょっとかっこいいみたいです

その場合は、通常テキストの配色も変更するのを忘れないでくださいね


レイアウトの保存

せっかく頑張って作ったので、保存しましょう

「表示(V)」から「ウィンドウレイアウト」内

「現在のレイアウトの保存」をクリックしてください

レイアウトの名前を入力すると

「レイアウトの呼び出し」から呼び出しを行えます


まとめ

今回は、Spyderの画面のレイアウト方法を紹介しました!

色々模索して、自分好みのレイアウトにしてくださいー


ところでなんですけど、

この「まとめ」と「さいごに」って何が違うんでしょうか?


さいごに

ここまで読んでくださった方、

ありがとうございます!!


間違い・追加などあればコメントいただければ幸いですm(__)m


次はレイアウトの変更について紹介します!

Spyder基本操作!起動~各画面の見方編

はじめに

この記事ではPythonの開発環境Anacondaに基本搭載されている

Spyderの基本的な使い方について紹介します


Spyderとは?

Spiderというと蜘蛛ですが、これは微妙に違います

決してタイプミスではありません


もっとも起動画面もロゴも蜘蛛の巣なのですが、

中身は全然蜘蛛に関係ないような気がします

Anacondaの使い方!基本操作を紹介します(仮想環境編) - しろちゃのプログラミング日記

上記の記事では、Anacondaの仮想環境について紹介しました

しかし、いつまでも対話モードでは長いコードが書けません


Spyderは、Anacondaで作成した仮想環境の中で

Pythonのスプリクトファイルを作成し、

実行するための機能です


Anacondaを使うなら必須の機能となりますので

活用していきましょー


Spyderを使う準備

まずは、Spyderを使いたい環境内にSpyderをインストールしてください

コマンドは「conda install spyder」です


Spyderの起動方法

Anaconda Navigatorから起動する

Anaconda3フォルダの中を見ると、

Anaconda Navigatorという名前のファイルがあると思います

アイコンは緑の丸です(?)

それをクリックし、開きましょう


起動には少々時間がかかりますが

画面に先の緑の丸が表示された後、

なんだか英語だらけの画面が出てきます

Anaconda Navigatorを起動することができました!


その後、愉快なアイコンたちに惑わされずに

Spyderのアイコン下にある「Launch」をクリックしてください

これでSpyderの起動は完了です


Anaconda Promptから起動する

せっかく仮想環境を作ったので

せっかくならその環境で開発を行いたいですよね

ということで、Spyderの仮想環境内起動方法を紹介します


まず、Anaconda Promptを開いて

目的の環境を有効化してください

コマンドは「conda activate 環境名」です

(base)表記が(環境名)となり

環境が有効化されます


まだ環境が作れていない方は、

下記の記事を参考に構築してみてください

ai-shirocha.hatenablog.com


環境が有効化されたら、

コマンド「spyder」を入力、確定してください

その後Spyderが起動します

起動には少しかかるので、慌てず待っていてください


なお、Spyder起動後もPromptは終了しないようにしてください

一緒にSpyderも終了してしまいます


Spyderのウィンドウ左上に

環境にインストールされているPythonのバージョンが記載されていたら成功です


もし違うバージョンが記載されている場合、

ダウンロードしたSpyderファイルが破損していたり

上手く機能していない可能性があります


どうしても起動しないときは--resetコマンドを使って一度Spyderを削除してみてください

・・・とAnacondaさんは言っていました(責任転嫁)


Spyderのウィンドウの見方

デフォルトでは、Spyderのウィンドウは大きく三つに分かれています

ウィンドウの中にウィンドウが入っているような形です

とてもややこしいですね


一つ一つのウィンドウは普通のウィンドウのように

閉じる、移動させる、などができます


スプリクトファイル

左画面いっぱいに開いているのが、

まっさらなスプリクトファイルです


なんかごちゃごちゃと書いてありますが気にすることはありません

気に入ったなら残しておいて

気に入らなかったら消してしまっても大丈夫です


ここにコードを入力していきます


左上の「ファイル」から、

保存したり新規作成したり色々できます

開いたファイルはタブをクリックすることで切り替え可能で

タブにある赤いxを押せば閉じることができます

コンソール

デフォルトで右下に表示されているウィンドウです


スプリクトファイルで実行した処理は、

このPythonコンソールに出力されます


またコンソールにコードを直接記入し、

Pythonインタラクティブモード(=対話モード)として使用することもできます

別のコンソールを新しく開いたり、閉じることも可能です


ヒストリログ

コンソール下のタブをクリックすると現れます

いまいちよく分かりませんが

おそらく今までの関数やらを表示してくれているのでしょう


謎多きウィンドウです(適当)


変数エクスプローラ

右上のウィンドウ下に、タブがあると思います

それをクリックすると現れるウィンドウです


ユーザ変数、つまり自分で設定した変数のデータを確認できます

変数名、データ型、大きさ、内容が表になっています


ファイルエクスプローラ

同じく右上に表示されているウィンドウのタブをクリックすることで現れます

PC内に保存されているファイルが表示されます

Windowsに搭載されているものと、やっていることは同じです


上のほうにある小さな矢印を押すことで、

親フォルダを開いたり、前画面に戻ったりといった操作ができます


ヘルプ

またまた同じく右上のウィンドウ

その名の通りヘルプです

この子は日本語なので、親しみがわきますね


まとめ

この記事では、Spyderの起動方法や各画面の見方を紹介しました

色々便利な機能が搭載されているのは、Spyderならではですね

さいごに

ここまで読んでくださった方、

ありがとうございます!!


間違い・追加などあればコメントいただければ幸いですm(__)m


次はレイアウトの変更について紹介します!

Pythonモジュール・ライブラリ!Numpy編2(基本の計算)

はじめに

この記事は、PythonのライブラリNumPyの

基礎的な情報を紹介するNumPy編シリーズの2つ目の記事です


NumPyを使った計算を行う方法を紹介します


基本の計算

既にお腹いっぱい胸いっぱいなにより頭がいっぱいいっぱいという感じですが

しろちゃからエールを送るので頑張って下さい

f:id:ai_shirocha:20191120123233p:plain
ファイトです!!


Numpyではnpリストごとに計算を行い、

結果のnpリストは元のnpリストとは別に作成されるので

計算してもnpリストが更新されることはありません


算術演算子Pythonと同じものが使えます


まずはnpリストを作成しときます

>>> a = np.arange(10, 55, 10)
>>> print(a)
[10 20 30 40 50]

この変数「a」を使って計算していきましょー


npリストと数字の計算

下記のように入力してください

>>> x = a + 2
>>> print(x)
[12 22 32 42 52]

計算結果を変数xに代入し、出力しました

それぞれの要素に「2」が足されているのが分かります

加法以外の計算もこんな感じでできます


npリスト同士の計算

この場合、それぞれ対応する要素ごとに計算は行われます

1番目と1番目、2番目と2番目、みたいな感じですね


ですが要素の数が異なるときは、

すべての要素に対応する要素があるわけではありません

その場合、計算は行えずエラーになります

>>> c = np.linspace(0, 10, 5)
>>> print(a)
[10 20 30 40 50]
>>> print(b)
[ 0.   2.5  5.   7.5 10. ]
>>> x = a * b
>>> print(x)
[  0.  50. 150. 300. 500.]

npリスト「a」と「b」の計算をやってくれました

こちらも乗法以外も色々できます


npリストの値を計算結果に更新する

前述の通り、npリストは計算しても

新しい値に勝手に更新されることはありません


ただし計算結果を元の変数に代入すれば

まるごと更新されるため、

値を更新するのと同じ結果を得ることができます

>>|python|
>>> b = np.arange(5)
>>> print(b)
[0 1 2 3 4]
>>> b = b + 2
>>> print(b)
[2 3 4 5 6]
>>> b = np.arange(5)
>>> b += 100
>>> print(b)
[100 101 102 103 104]
|

こんな感じです

この「+=」とかも、

すべてPythonの標準装備です

特殊な演算子はないので楽ちんですね


npリスト内全体で行う主な計算

基本の計算では要素一つ一つをそれぞれ計算し、

計算結果は元のnpリストと同じ大きさのnpリストとして算出されました

これはリスト内で計算を行い、

結果は元のnpリストよりも小さくなります


(なおここで言うnpリストの大小とは

要素そのものの大小ではなく

要素のの多少のことです)


計算軸を指定する「axis」パラメータ

例によってパラメータというのが何を意味するのかは良く分かりませんが、

これを指定することで縦、または横方向に

この後に紹介する計算を行うことができます


要するに行と列の話なので

「axis」が活かせるのは二次配列の数列となります


「axis = 0」の時は方向に、

「axis = 1」の時は方向に、


それぞれ計算をする方向を指定できます


具体例はこの後紹介します


npリスト内の値を合計する「sum」

Excelなどでもおなじみ、sumです

利用方法も大体同じ

使うと合計が出てきます

>>> a = np.arange(12).reshape(3,4)
>>> print(a)
[[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]]
>>> print(a.sum())
66

ここで、前述した「axis」を使用することができます

以下のように記述してください

>>> b = a.sum(axis = 0)
>>> print(b)
[12 15 18 21]
>>> c = a.sum(axis = 1)
>>> print(c)
[ 6 22 38]

見比べてもらうと分かると思うのですが、

「axis = 0」の時は方向に

「axis = 1」の時は方向に

それぞれ計算が行われています


最大値・最小値を取り出す「max」「min」

使い方はsumとほぼ同じです

せっかくなので乱数を作成して調べてみます

>>> r = np.random.randint(1, 1000, 1000)
>>> print(r)
[ 29 346 357 385 658 270 967 669 608 937 …(略)」
>>> M = r.max()
>>> print(M)
998
>>> m = r.min()
>>> print(m)
3

1以上1000未満の整数を使って1000個の乱数を作成し、

最大値と最小値を取り出しました


ユニバーサル関数

NumPy provides familiar mathematical functions such as sin, cos, and exp. In NumPy, these are called “universal functions”(ufunc). Within NumPy, these functions operate elementwise on an array, producing an array as output.
引用元:Quickstart tutorial — NumPy v1.18.dev0 Manual

Google先生の直訳によれば

「NumPyは、sin、cos、expなどの使い慣れた数学関数を提供します。NumPyでは、これらは「ユニバーサル関数」(ufunc)と呼ばれます。NumPy内では、これらの関数は配列に対して要素ごとに動作し、出力として配列を生成します。」

相変わらず意味の分からない説明です


sin、cosは分かります

三角関数です

expって何?

経験値??

どうでもいいことのフォントサイズが大きいしろちゃです

おそらく数式の一種なのでしょう

数学のテストで40点台を取りまくった私の手には負えません


使う時が訪れないことを祈るばかりですが

万が一の時は以下のように記述してください

np.数式()

具体的な使い方を紹介します

>>> import matplotlib.pyplot as plt
>>> x = np.arange(1, 10, 0.1)
>>> y = <b>np.sin(x)</b>
>>> print(plt.plot(x, y))
[<matplotlib.lines.Line2D object at 0x0000027587343488>]
[f:id:ai_shirocha:20191120215041p:plain]

グラフ描画のためのライブラリmatplotlibを使い、

三角関数のグラフを作成してみましたー


ところで、三角関数ってなんだっけ・・・


まとめ

この記事では、

Numpyの基本な計算方法を紹介しました


関数とかなんとかややこしいことがたくさんありますね

私は気が狂いそうです!(いい笑顔)


基本でもしっかり使える関数がたくさんあるので、

ぜひ活用してくださいー


さいごに

またもやかなり長くなってしまいました…


ここまで読んでくださった方、

本当にありがとうございます!!


間違いなどあればご報告いただければ幸いですm(__)m


次回は、インディックスみたいなの(未定)を紹介しようと思います!

Pythonモジュール・ライブラリ!NumPy編1(計算の準備)

はじめに

この記事は、PythonのライブラリNumPyの

基礎的な情報を紹介するNumPy編シリーズの最初の記事です


概要や導入を含め、NumPyを使った計算を行うための前段階までを紹介します


なお、この先NumPyはNumpyと表記していきたいと思います

Shiftキーを押すのがめんどくさくて…


なお、この記事は結構なげーので

目的の場所がある場合は目次から飛ぶことをおすすめします


Numpyについて

NumpyはPythonの外部ライブラリです

NumPyは、プログラミング言語Pythonにおいて数値計算を効率的に行うための拡張モジュールである。効率的な数値計算を行うための型付きの多次元配列(例えばベクトルや行列などを表現できる)のサポートをPythonに加えるとともに、それらを操作するための大規模な高水準の数学関数ライブラリを提供する。
引用元:NumPy - Wikipedia

我らが百科事典様によればこんな感じ。

要するに、たくさんの計算式の関数がセットになって入ってるってことですね

Numpyを使えば、高校数学のつまずきポイント三角関数を始めとし、

たくさんの計算式が扱えるようになります


また、機械学習など大量のデータを処理するときにも使われます

すごく処理が速いらしいです


Numpyの有効化

他のモジュールと同じように、

例の「import」でライブラリを読み込んでから使用します


なおNumpyは省略され「np」と読み込まれることが多く、

そちらの方が後々便利です


そのため読み込みの際は下記のように入力するのがおすすめです

import numpy as np

今後は上記のコマンドにて読み込んだ前提で紹介していきます


もしnpが気に入らなければ

「hp」でも「mp」でも好きなように読み込んでください

もちろん略さなくてもオーケーです


その場合は「np」と表記されている部分を

読み込んだ名前だと思ってください


Numpyチュートリアル

Numpyのチュートリアルみたいなものです


高度で専門的な科学的算術ができるとっても賢いNumpyですが、

高度で専門的な算術は高校生のしろちゃには理解できないので簡単なものを紹介します


この先の記事の作成においては、以下のサイトを参考にしました

Quickstart tutorial — NumPy v1.18.dev0 Manual


Numpyの扱うデータ型「ndarray」


Numpyの元となる機能は、

リスト型っぽいデータ型を用いて算術的な処理を行うことです

このリスト型っぽいデータ型のことを、「ndarray」と呼ぶそうです


しかし・・・

んだらーぁいぃ…?

英語嫌いの高校生しろちゃにはさっぱり読み方が分かりません(´;ω;`)ウッ…

そしてスペルが覚えられない!


というわけで、今後は

データ型は「npリスト型

リストっぽいものは「npリスト」とします


公式サイドからしてみればタプル型だそうですが、

「np関数で更新できるリスト」という意味で名付けました


いずれにせよ、この「npリスト型」は

Python標準装備の「リスト型」とは異なることに注意してください


npリストを作成する関数

基本の関数「array」

「array」はnpリストを

そのまんま作ってくれます

試行すると以下のようになります

>>>import numpy as np
>>>num = np.array([0,1,2,99])
>>>print(num)
[ 0  1  2 99]

上記のように、限りな~くリスト型っぽいnpリストが作成できました

この際、「(0, 1, 2, 99)」としないように気をつけてください

[ ]←コレが必要です

ちなみにこのデータ型を「type」関数で調べると

以下のようになります

>>>print(type(num))
<class 'numpy.ndarray'>


二次配列等も作れます

作り方は以下の通り

>>>num2 = np.array([(1, 2, 3),(4, 5, 6)])
>>>print(num2)
[[1 2 3]
 [4 5 6]]

こんな感じです

もっと繋げれば、繋げただけ作れます


ゼロでいっぱいのnpリストを作成する「zeros」

某ニュース番組みたいな関数です

使い方は下記の通り

>>>zero1 = np.zeros((4, 3))
>>>print(zero1)
[[0. 0. 0.]
 [0. 0. 0.]
 [0. 0. 0.]
 [0. 0. 0.]]

なお、このゼロたちのデータ型は

デフォルトで「float64」となっています

おしりに「.」が付いているのはそういう理由です


等差数列のnpリストを公差から作成!「arange」

さて、等差数列というのは何を意味するのかと言いますと

隣り合った数字の差が常に一定である数列のことです

例えば、偶数の数列とかですね

それを一発で作ってくれる賢い関数を紹介します

>>> tousa = np.arange(5, 20, 2)
>>> print(tousa)
[ 5  7  9 11 13 15 17 19]

上記コマンドの意味は、

「5から20までの数字を使って2ずつ増える数列を作って」

という意味です


等差数列の数学用語を使って説明すると

「初項5、公差2、末項20未満の数列を作って」

という感じ


初項、公差にあたる部分は省略することも可能です

省略した場合、初項は0、公差は1となります


なお、それぞれマイナスにしたり小数にしたりもできます

>>> tousa2 = np.arange(10, 9, -0.1)
>>> print(tousa2)
[10.   9.9  9.8  9.7  9.6  9.5  9.4  9.3  9.2  9.1]

「10から9までの数字を使って-0.1ずつ増える数列」です

なお、この際「10」と「9」を逆に入力すると

作成されるnpリストは空になってしまうので注意して下さい



*** 等差数列のnpリストを要素の数から作成!「linspace」

「arange」では要素と要素の差を指定することでnpリストを作成しましたが、

これでは何個の要素がnpリスト内にあるのか分かりません

そこで、公差よりも項数が大事な時はこの関数を使用しましょう

>|python|
>>> tousa3 = np.linspace( 0, 2, 9 )
>>> print(tousa3)
[0.   0.25 0.5  0.75 1.   1.25 1.5  1.75 2.  ]

使い方は上記の通り

公差は「0.5」となっているようですね


要素を乱数にして作成する「random」
  • random.random

どこかで見たことがあるような関数ですね

0~1の範囲で乱数を作成し、

npリストの中にぶち込みます

なんだかどこかで聞いたことがあるような…

>>> r = np.random.random(3)
>>> print(r)
[0.14557564 0.61724235 0.58665896]

そしてどこかで見たことがあるような出力結果ですね!


  • random.randint

あくまで私の予想なんですが、

たぶんrandomシリーズは全部使えるんじゃないかな…


そんな思いを抱えながら試しにやってみると

>>> r = np.random.randint(1, 10, 4)
>>> print(r)
[5 1 4 6]

やっぱりか!!


ということで「random.randint」はint型、

つまり整数の乱数をぶち込みます


例のコマンドだと、

「1以上10未満の乱数を4つ」のnpリストが作成できます


Numpyのその他の基本データ

npリスト内の要素のデータ型に関するオブジェクト「dtype」

オブジェクトというのが何なのかは良く分かりませんが、

Google先生がそういうので

英語に関して無力な私は納得するしかありません


使い方は以下の通りです

>>>a = np.array([0, 2, 15])
>>>print(a.dtype)
int36

「変数ドットdtype」という形です

今変数「a」にはnpリストが代入されているので、

より正確に言えば「npリストドットdtype」ですね


(なお、int32というのは「32ビットのint型」の意です

こんな感じでデータ型の後に数字が来ることはよくあると思いますが、

特に記述がない場合無視しておーけーです)


この「dtype」を使えばnpリスト作成の際、

入れる要素のデータ型を指定してnpリストを作成することができます

以下のように記述してください

>>> b = np.array([1, 5, 3], dtype = str)
>>> print(b)
['1' '5' '3']

それぞれの要素に「''」がつきました

つまり、str型になったんですね


配列の次元を表す「shape」

これは各次元の配列のサイズを示します

以下のように記述します

>>> a = np.array([(0,1,2),(3,4,5)])
>>> print(a)
[[0 1 2]
 [3 4 5]]
>>> print(a.shape)
(2, 3)

どっちが行でどっちが列だか良く分かりませんが

(縦, 横)って感じです

サイズの指定「reshape」

「arange」等でnpリストを作成する際、

以下のように記述することで

指定サイズのnpリストを作成できます

>>> a = np.arange(18).reshape(6, 3)
>>> print(a)
[[ 0  1  2]
 [ 3  4  5]
 [ 6  7  8]
 [ 9 10 11]
 [12 13 14]
 [15 16 17]]

これで、縦6x横3のnpリストが作成できました!


まとめ

今回の記事では、Numpyの概要から

計算を行う上で必ず押さえておかなければならない項目を紹介しました


なかなか多くて大変ですね!

私も大変でした!!

さいごに

かなり長くなってしまいましたが

ここまで読んでくださった方、本当にありがとうございます!!


間違いなどあれば

ご報告いただければ幸いです


次回は、基本的な計算の仕方を紹介しようと思います!

記事一覧・目次

トリセツシリーズ

使い方、導入方法などを紹介している記事です


Python基本講座!IDLEチュートリアル編

はじめに

この記事ではPythonの開発に使われる、

IDLEの操作を一通り紹介します


なお、使用OSはWindowsとなります


~起動

インストール

IDLEの個別インストールは必要ありません

Pythonをインストールしたときに標準装備でついてきます


起動

スタートボタンを押すと、ショートカットの一覧が表示されます

「P」を探して、Pythonのフォルダをクリックしてください

IDLEファイルを探して、開きましょう

タイトル「Python バージョン Shell」のウィンドウが開きます

以上で起動は完了です


Pythonインタラクティブモード

インタラクティブモードとは?

「対話モード」とも呼ばれる、

コードに対し基本的には一行ごとに

すぐに反応が返ってくるモードになります


ちょっとした関数の確認などにとても便利です


試行したコードの削除・修正ができないため、

大量のコードを書いていく開発には向きません


使い方

開いたすぐのウィンドウでは、

何もしなくてもPythonの対話モードが使用できます

>>> 

こんな感じになっているのが、入力待ちの状態です

この状態でコードを入力し確定すると

すぐ次の行に出力結果、またはエラーが表示されます


Pythonスプリクトモード

スプリクトモードとは?

インタラクティブモードとは逆に

処理はファイルまるごと実行されます


ファイルの中に一か所でもエラーがあると

プログラムはその時点で止まってしまうため


プログラムの実行には普通

こちらのスプリクトモードが使用されます


使い方

ウィンドウ左上の「File」をクリックします

すると英語がたくさん出てくるので、「New File」をクリックしてください

まっさらなウィンドウが現れます

これがコードを入力するファイルです


コードを入力し、「Run Module」をクリックすることで実行されます

キーボードの「F5」キーを押すことでも実行が可能です

直前に保存しないと謎のウィンドウが出てきますが

OK押しとけばとりあえず大丈夫です

いまだに意味は分かっていませんが、不具合はありませんー


保存

スプリクトファイルを保存することで、

閉じてもまた続きから書けます


「File」タブの「Save」をクリックしてください

名前を決めて、最後に「.py」をつけると

Pythonのスプリクトファイルとして保存されます


なお二回目以降のこの保存は、上書き保存となります

名前、保存場所を変更したい場合は「Save As…」をクリックしてください

「…」の部分に何があるのかは不明ですが!(#^^#)


スプリクトファイルの呼び出し

せっかく保存したからには開きましょう

実行するウィンドウはどこでもいいので

「File」タブの「Open」をクリックしてください


開きたいファイルを選択し、「開く」をクリック

前回保存した場所から編集できます


終了

閉じるときは右上の「x」で閉じられます

また「File」のタブから「Close」でも閉じられます

その時「Exit」を選択すると、IDLE自体も一緒に終了します


まとめ

この記事では、IDLEの基本操作を紹介しました

いちいち「P」までスクロールするのがめんどくさいという方は

デスクトップなどにファイルやフォルダをピン留めしておくと便利です

さいごに

今回紹介した操作の一部は、以下の記事にてコマンドを紹介しています

良ければ参考にしてください!!

ai-shirocha.hatenablog.com


さいごに、何か記事に間違いなどあればご連絡いただければ幸いです!m(__)m