.NET 開発基盤部会 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。

目次

概要

  • 本体部分は必要最小限に抑えられている。
  • 豊富で大規模な文書
  • さまざまな領域に対応する大規模な標準ライブラリやサードパーティ製の
    ライブラリが提供され、本体にない機能はその都度呼び出して使用する。
  • 多くのハードウェアとOSに対応(Linux版、Mac版、Win版、32/64bitが存在)
  • 複数のプログラミングパラダイムに対応している。
    • オブジェクト指向
    • 命令型
    • 手続き型
    • 関数型
  • 動的型付け言語
  • 参照カウントベースの自動メモリ管理(GC)を持つ。
  • Pythonのリファレンス実装であるCPythonは、OSS。

バージョン

  • 2.x 系のバージョンと 3.x 系のバージョン(現時点では、Python 3.5)が存在。
    • 2.x 系と3.x 系には互換性がない。
    • Python 2.x はレガシー
    • Python 3.0 が Python 言語の現在と未来

ディストリビューション

  • Anaconada
    • Continuum Analytics社によって提供されているPythonのディストリビューションの一つ。
    • Python 本体に加え、科学技術、数学、エンジニアリング、データ分析など、
      よく利用される Python パッケージを一括でインストール可能
  • conda
    • パッケージ管理システム
    • バージョン管理
    • 仮想環境管理

インストール

Anaconda

AnacondaによりPythonをインストールする。

Visual Studio Code

  • Visual Studio Codeをインストールする。
  • Visual Studio Codeを起動して、ファイルを拡張子*.pyで保存する。
  • 以下のように推奨の拡張機能が表示されるので、これをインストールする。
Visual Studio CodeでPython拡張機能をインストール

ファースト・ステップ

インタプリタ(対話モード)

CMD or Anaconda Promptを起動する

Pythonインタプリタを起動する

  • Pythonのバージョン情報の確認
    python --version
  • Pythonインタプリタを起動
    python

Pythonインタプリタの実行

  • 算術計算
    >>>1+1
    2
  • データ型
    >>>type(10)
    <class 'int'>
  • 変数
    >>>x=10
    >>>print(x)
    10
  • リスト
    >>>a=[1,2,3,4,5]
    >>>print(a)
    [1,2,3,4,5]
    >>>a[0]
    1
    >>>a[4]
    5
    >>>a[4]=99
    >>>a[4]
    99
    >>>print(a)
    [1,2,3,4,99]
  • ディクショナリ
    >>>dic={'hoge1':1}
    >>>dic['hoge2']=2
    >>>print(dic)
    {'hoge1': 1, 'hoge2': 2}
  • boolと論理演算
    >>>hungry = True
    >>>sleepy = False
    >>>type(hungry)
    <class 'bool'>
    >>>not hungry
    False
    >>>hungry and sleepy
    False
    >>>hungry or sleepy
    True
  • if文
    >>>hungry = True
    >>>if hungry:
    ...    print("im hungry") # 半角スペースのインデントが必要
    ...
    im hungry
    >>>hungry = False
    >>>if hungry:
    ...    print("im hungry") # 半角スペースのインデントが必要
    ...else:
    ...    print("im not hungry") # 半角スペースのインデントが必要
    ...    print("im sleepy")
    ...
    im not hungry
    im sleepy
  • for文
    >>>for i in [1,2,3]:
    ...    print(i) # 半角スペースのインデントが必要
    ...
    1
    2
    3
  • 関数
    >>>def hello():
    ...    print("hello!")
    ...
    >>>hello()
    hello!
    >>>def hello(object):
    ...    print("hello " + object + "!")
    ...
    >>>hello("hoge")
    hoge hello!

Pythonインタプリタの終了

対話モードを終了するには、 exit() を実行する。

スクリプトファイル

Pythonスクリプトファイルに保存

テキストファイルに

print("im hungry")

と書いて、拡張子を*.pyとして保存する(例 hungry.py)。

Pythonスクリプトファイルを実行

cdでカレントディレクトリに移動して、

>python hungry.py
im hungry

クラスの定義と実行

  • クラスの定義
    class クラス名:
        def __init__(self, 引数, ...): #コンストラクタ
            ...
        def メソッド名1(self, 引数, ...): #メソッド1
            ...
        def メソッド名2(self, 引数, ...): #メソッド2
            ...
  • クラスの定義例
    class Man:
        def __init__(self, name):
            self.name=name
            print("inited!")
        def hello(self):
            print("hello " + self.name + "!")
        def goodbye(self):
            print("good-bye " + self.name + "!")
    
    m=Man("hoge")
    m.hello()
    m.goodbye()

NumPy

Matplotlib

行列の計算

多次元配列

ベクトル

>>> import numpy as np
>>> a=np.array([1,2,3,4])
>>> print(a)
[1 2 3 4]
>>> np.ndim(a) # 配列の次元
1
>>> a.shape # 配列の形状
(4,)
>>> a.shape[0] # 次元の要素数
4

行列

行列とは、

  • 2次元配列
  • 行が、1つの添字で表される1つのべクトル
  • 列は、ベクトルのn番目の要素をグループ化したもの。
    列↓
  ┌      ┐
行│○  ○│
→│      │
  │○  ○│
  └      ┘
>>> a=np.array([[1,2],[3,4],[5,6]])
>>> print(a)
[[1 2]
 [3 4]
 [5 6]]
>>> np.ndim(a) # 配列の次元
2
>>> a.shape # 配列の形状
(3, 2)

行列の積算

A行列 * B行列 =C行列

  • A行列の列数とB行列の行数が一致ししている必要がある。
  • 計算後のC行列は、A行列の行数 * B行列の列数の行列になる。

2行2列の場合

┌      ┐┌      ┐   ┌                    ┐
│a1  b1││a2  b2│   │a1a2+b1c2  a1b2+b1d2│
│      ││      │ = │                    │
│c1  d1││c2  d2│   │c1a2+d1c2  c1b2+d1d2│
└      ┘└      ┘   └                    ┘
  A行列    B行列              C行列
  2行2列    2行2列              2行2列

x行y列の場合

┌      ┐┌              ┐   ┌                                          ┐
│a1  b1││a2  b2  c2  d2│   │a1a2+b1e2  a1b2+b1f2  a1c2+b1g2  a1d2+b1h2│
│      ││              │   │                                          │
│c1  d1││e2  f2  g2  h2│ = │c1a2+d1e2  c1b2+d1f2  c1c2+d1g2  c1d2+d1h2│
│      │└              ┘   │                                          │
│e1  f1│                     │e1a2+f1e2  e1b2+f1f2  e1c2+f1g2  e1d2+f1h2│
└      ┘                     └                                          ┘
  A行列        B行列                             C行列
  3行2列        2行4列                             3行4列
┌      ┐┌  ┐   ┌         ┐
│a1  b1││a2│   │a1a2+b1b2│
│      ││  │ = │         │
│c1  d1││b2│   │c1a2+d1b2│
└      ┘└  ┘   └         ┘
  A行列   B行列     C行列
  2行2列   2行1列     2行1列

メソッド

NumPyのdot(ドット積)メソッドを使用する。

>>> a=np.array([[1,2,3],[4,5,6]])
>>> b=np.array([[1,2],[3,4],[5,6]])
>>> c=np.array([[1,2],[3,4]])
>>> d=np.array([7,8])
>>> a
array([[1, 2, 3],
       [4, 5, 6]])
>>> b
array([[1, 2],
       [3, 4],
       [5, 6]])
>>> c
array([[1, 2],
       [3, 4]])
>>> d
array([7, 8])
>>> np.dot(a, b)
array([[22, 28],
       [49, 64]])
>>> np.dot(b, c)
array([[ 7, 10],
       [15, 22],
       [23, 34]])
>>> np.dot(b, d)
array([23, 53, 83])
>>> np.dot(a, c) # A行列の列数とB行列の行数が一致しない。
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: shapes (2,3) and (2,2) not aligned: 3 (dim 1) != 2 (dim 0)

参考


添付ファイル: fileVSCode.png 123件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2017-07-19 (水) 14:26:22 (791d)