AI

Numpy入門 Numpy配列の作り方(動画あり)

Numpyについて numpyは「Numerical python」の意味でPythonの数値計算における最も重要な基本パッケージです。 機械学習ではベクトルや行列、テンソルなどのデータ構造が頻繁に使用されます。Numpyはこれらのデータ構造を効率よく高速に実行できます。 Numpyのドキュメントでは次のような説明になっています。 NumPyは、Pythonでの科学計算のための基本的なパッケージです。これは、多次元配列オブジェクト、さまざまな派生オブジェクト(マスクされた配列や行列など)、および配列の高速演算(数学、論理、形状操作、並べ替え、選択、I / Oなど)のためのさまざまなルーチンを提供するPythonライブラリです、離散フーリエ変換、基本的な線形代数、基本的な統計演算、ランダムシミュレーションなど。 また、これらのデータ構造でよく使われるワードを覚えておきましょう。 スカラー:単なる数値 ベクトル:スカラを集めてまとめたもので、1次元の配列 行列:スカラーを、タテヨコに並べたもので、2次元の配列 テンソル:スカラを3次元以上にまとめたもので、3次元以上の配列 Numpyのインポート Numpyの呼び出しをimport numpy as npに統一すべきです。 from numpy import *とすることはpythonの組み込み関数と名前空間が重なる可能性が高くなります  >>続きを読む

Python入門 クラスの継承とオーバーライド(動画あり)

クラスの継承 クラスの継承とはクラスが持つ変数とメソッドを引き継いで(継承して)新しいクラスを作る仕組みです。 新しいクラスを作成するときに、既存のクラスが有効に使える場合も多いです。例えばAnimalクラスを作成しておいて、それを元にPersonクラスを作成するとコードの量を減らすことができます。 継承元のクラス:スーパークラス 継承先のクラス:サブクラス スーパークラスとサブクラスの書き方 class Fruits:   pass class Apple(Fruits):   pass passとは:passは何も実行することがないという意味です。passを使うことで何も記述しないでエラーになることを防ぎます。 関数名、クラス名は決まっているが、実装がまだ明確でないときや、if文のelse 節で使ったりする場合もあります。 クラス継承の例 インスタンス化の例 結果 動物クラスです ‘動物’ サブクラスやスーパクラスからのメソッドや属性の呼び出し例 結果 動物クラスです 人間クラスです 動物 人間 継承の特徴 継承はis-a関係にあります。 is-aの関係とは Apple is a fruit. 「リンゴはフルーツである」の関係にあるものが継承を行う際のポイントになります。 コンストラクタを含んだ継承 結果 Hell  >>続きを読む

Python入門 オブジェクト指向について、クラスの作り方(動画あり)

オブジェクト指向について Pythonでは数値からモジュールまで全てオブジェクトです。つまり、オブジェクトはPython の核になるものです。 全てのオブジェクトは型(type)を持ちます。型とはつまりそのオブジェクトで何ができるのかを定義したものです。 型にはスカラと非スカラがあります。 スカラとは、よく原子に例えられます。つまり、これ以上分割できないものです。 非スカラは文字列などがあり、内部構造を持ったものです。 Python のスカラオブジェクトは、int, float, bool, None の4つがあります。 オブジェクトの型を確認するにはtype()を使います。この関数は今まで何となく使っていたと思いますが、実はどのようなオブジェクトかを確認していたことになります。 Pythonでは、これらのオブジェクトを意識することなく使用することができます。 オブジェクトの中身がどのようになっているかを気にする必要があるのは、独自のオブジェクトを使うときです。 オブジェクトには属性(変数)とメソッド(関数)が含まれています。そして、これらをまとめたものがクラスです。 クラスについて Pythonではクラスは単なる型でしかありません。そのためクラスを使おうとするとインスタンス化してオブジェクトを作る必要があります。 インスタンス化して出来上がったオブジェクトの型を調べるとクラス名が  >>続きを読む

Python入門 lambda関数の使い方、map関数の使い方(動画あり)

lambda関数(無名関数) Pythonの関数には、無名関数と呼ばれるものがあり、これを使うと、コードを簡素化できます。Pythonでは無名関数のことをラムダ関数と呼びます。 無名関数とは、その名前の通り、名前がない関数で、関数をその場に記述する記法です。 ラムダ関数を書くには、lambdaというキーワードを使います。普通の関数を作るときと同じで、lambdaと記述して引数を設定した後、その処理を記述します。 例として、掛け算をするcalc_multi関数を採り上げます。この関数は次のように、defで定義しておき、それから実行しました。 lambda 引数: 返り値 掛け算を行う通常の関数の例 結果 30 関数を一旦変数に代入した後に実行する例 結果 30 「lambda」というキーワードを使って、無名関数として書くと次のように書けます。 結果 30 ここで「lambda a, b:」というのが、「calc_multi(a, b)」に相当する部分です。 そして「:」で区切って、その関数の処理(ここでは`return a * b`)を記述するというのが、無名関数の基本的な書き方です。 わかりやすい記述は次のようになります。 ラムダ関数を定義してから一旦変数に代入し、その後、変数名で関数を実行しています。 結果 20 map関数 Pythonの、map() はリストやタプルのすべての  >>続きを読む

Python入門 位置引数、キーワード引数、デフォルト引数、便利な引数の使い方(動画あり)

引数について Pythonでは他のプログラム言語と同様に、関数定義する時に、関数内に変数を渡す方法として引数があります。 関数定義の際に使われるものを仮引数(parameter)、関数呼び出し時に実際に渡す値のことを実引数(argument)と呼びます。 仮引数は0個以上複数設定することができます。 今回はPythonの仮引数の設定方法を説明します。 また、関数の使い方の手引きである、「docstring」の使い方も説明しています。 Pythonの関数で引数の使い方 Pythonでは仮引数の記述の仕方に次のような方法があります。 位置引数:複数の仮引数を書いた場合、仮引数に記述した順番通りに実引数を記述する方法 キーワード引数:順番の間違いをなくすため、辞書形式で実引数にキーワードをつける方法 デフォルト引数:仮引数にデフォルト値を設定することで、実引数を省略することができる *(アスタリスク)による位置引数のタプル化:*(アスタリスク)を付けることで可変個の位置引数をタプルにまとめることができる **(アスタリスク2つ)によるキーワード引数:**(アスタリスク2つ)を付けることで可変個のキーワード引数を1つの辞書にまとめることができる 位置引数とキーワード引数 位置引数はごく一般的な引数の使い方です。 複数の仮引数を書いた場合、仮引数に記述した順番通りに実引数を記述する方法です。  >>続きを読む

Python入門 グローバル変数とローカル変数(動画あり)

Pythonのグローバル変数とローカル変数 Pythonでは関数の呼び出しされるごとに、実引数と関数内の変数はローカルスコープに存在します。 また、関数の外で宣言された変数はグローバルスコープに存在することになります。グローバルスコープはプログラムが実行されると生成されます。 ローカルスコープにある変数はローカル変数、グローバルスコープにある変数はグローバル変数といいます。 グローバル変数は関数の中からも、関数の外からでもどこからでも使うことができます。 関数内でグローバル変数を使う例 結果 1 100 1 関数内でグローバル変数と同じ名前のローカル変数を宣言すると、 関数内ではローカル変数が優先して使用されます。 関数内でグローバル変数を使用して、その後に同じ名前のローカル変数を宣言するとエラーになります。 同じ名前のグローバル変数とローカル変数が混在してエラーになる例 結果 1 ————————————————————————— UnboundLocalError Traceback  >>続きを読む

Python入門 モジュールのインポートとrandomモジュール(動画あり)

モジュールのインポート Pythonの開発環境にデフォルトで含まれるライブラリを標準ライブラリといいます。 標準ライブラリには、整数型(int)、文字列型(str)、リスト型(list)など組み込み型やprint(), input()などの組み込み関数やクラスをまとめたモジュールが多数用意されています。 標準ライブラリ以外にもPythonには多数のライブラリが公開されています。 標準ライブラリ以外のモジュールを利用するにはモジュールをimportする必要があります。 import モジュール名 モジュールとは、Pythonのファイルのことです。 パッケージとは、モジュールをいくつか集めてまとめたものです。 ライブラリとは、いくつかのパッケージをまとめて一つのライブラリとしてインストールできるようにしたものです。 モジュール < パッケージ < ライブラリ 実際はどれも結構曖昧に使われています。 randomモジュール randomモジュールは、Pythonでランダムな処理が必要な場合に活躍する標準モジュールで乱数を返してくれます。 random.random(): randomモジュールの中でも一番基本的な関数で、0.0から1.0の範囲のfloat型の値を返します random.uniform(2.0,5.0): 第一引数と第二引数の範囲内で、float型の値を返します rando  >>続きを読む

Python入門 関数の定義方法(動画あり)

関数入門 関数は引数で原料を入れると、何らかの処理を行って戻り値として出来上がったものを吐き出してくれる便利な処理装置のようなものです。 Pythonの関数の定義方法 def 関数名(引数1, 引数2, …): [インデント]処理 [インデント]return 戻り値 Python で関数を定義する時、キーワードdefが関数定義の始まりです。 続けて関数名、そして丸括弧内に仮引数を記述します。 関数の本体はインデントを利用してブロックにします。 関数がなんらかの値を返す場合、return文で戻り値を指定します。 関数の呼び出しは関数名と丸括弧内に実引数を記述します。 引数について 引数は関数に対して、値を渡すことができます。関数内に外部からデータを渡すことができる便利な仕組みです。 呼び出し側の引数を「実引数(argument)」、関数定義側の引数を「仮引数(parameter)」といいます。 引数には位置を指定したり、キーワードを指定したり、デフォルトの値を指定したりすることができます。 引数の詳細は別途説明します。 戻り値 戻り値は返り値とも言われます。 戻り値は、結果を出力するもので、return の後に結果を記述します。 複数の戻り値が必要な場合は、リスト型、タプル型、辞書型にして戻します。 タプルの場合は、戻り値をカンマ区切りで return すれば良いです。   >>続きを読む

Python入門 内包表記(動画あり)

Pythonの内包表記とは、ひとつ以上のイテレータ からPythonデータ構造をコンパクトに作れる形式です。 内包表記 内包表記が書けるようになると、データ分析でもループ文を1行で書けたりと便利です。 内包表記にはリスト内包表記、辞書包括表記、集合内包表記、ジェネレータ内包表記があります。 リスト内包表記 [expression for item in iterable] 内包表記を使ったリストの作成 結果 [1, 2, 3, 4, 5] enumerate関数を併用して作成するリスト インデックス番号と値がタプルになってリストができます。 結果 [(0, 1), (1, 2), (2, 3), (3, 4), (4, 5)] 上のサンプルをformat関数を使って整形した例 結果 [‘0:1’, ‘1:2’, ‘2:3’, ‘3:4’, ‘4:5’] for文で取り出した値を加工する例 結果 [2, 3, 4, 5, 6] リストの要素をint型に変える例 結果 [2, 1, 3, 4, 5] リスト内包表記の条件式を追加 [expression for item in itarable if condition] if文と併用した例 結果 [1, 3, 5]   >>続きを読む

Python入門 zip関数(動画あり)

zip関数 Pythonのzip関数の使い方を動画を使って説明しています。 Pythonのzip関数は、forループで複数のリストの要素を取得してタプルの形式でまとめて変数に代入してくれます。これはつまり、タプルのアンパッキングを行っているものです。 もし、zip関数を使用時に、いくつかのリストが持つ要素数が異なる場合は、要素数が多いリストの余分な要素が無視されます。 2つのリストでzip関数を使った例 結果 (1, 4) (2, 5) (3, 6) タプルの場合もリストと同じ結果になります。 結果 (1, 4) (2, 5) (3, 6) for in文の中の変数をイテラブルなオブジェクトの数に合わせると、それぞれの変数に値が入ります。 for in文の変数を複数にした例 結果 num_x: 1 num_y: 4 —————— num_x: 2 num_y: 5 —————— num_x: 3 num_y: 6 —————— 辞書作成 Pythonのzip関数を使ってタプルから辞書を作成する例 結果 {‘bird’: ‘鳥̵  >>続きを読む