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

目次

概要

数値計算を効率的に行うための拡張モジュール

  • 効率的な数値計算を行うための型付きの多次元配列のサポートをPythonに加える。
  • 多次元配列を操作するための大規模な高水準の数学関数ライブラリを提供する。

インストール

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

ファースト・ステップ

インポート

>>>import numpy as np

NumPyの配列

1次元配列はベクトルとも言う。

生成

>>>x=np.array([1.0,2.0,3.0])
>>>print(x)
[1. 2. 3.]
>>>type(x)
<class 'numpy.ndarray'>

算術計算

同じ数の要素を持つ2つのNumPy配列を算術計算で処理する。

>>>x=np.array([1.0,2.0,3.0])
>>>y=np.array([2.0,4.0,6.0])
  • 要素ごとの足し算
    >>>x+y
    array([ 3.,  6.,  9.])
  • 要素ごとの引き算
    >>>x-y
    array([-1., -2., -3.])
  • 要素ごとの掛け算
    >>>x*y
    array([  2.,   8.,  18.])
  • 要素ごとの割り算
    >>>x/y
    array([ 0.5,  0.5,  0.5])

NumPyのN次配列

  • 2次元配列は行列とも言う。
  • ベクトルや行列を一般化したものをテンソルと呼ぶ。
  • ここでは、3次元以上の配列を、テンソル/多次元配列と呼ぶ。

生成

>>>a=np.array([[1, 2], [3, 4]])
>>>print(a)
[[1 2]
 [3 4]]
>>>a.shape # 行列の形状
(2, 2)
>>>a.dtype # 行列要素のデータ型
dtype('int32')

算術計算

>>>a=np.array([[1, 2], [3, 4]])
>>>b=np.array([[3, 0], [0, 6]])
  • 要素ごとの足し算
    >>>a+b
    array([[ 4,  2],
           [ 3, 10]])
  • 要素ごとの掛け算
    >>>a*b
    array([[ 3,  0],
           [ 0, 24]])

ブロード・キャスト

スカラ値や異なる形状の配列と計算を行う。

スカラ値

配列とスカラ値との計算では、スカラ値が配列形状に拡張され計算される。

  • NumPyの配列
    >>>x=np.array([1.0,2.0,3.0])
    >>>x/2.0
    array([ 0.5,  1. ,  1.5])
  • NumPyのN次配列
    >>>a=np.array([[1, 2], [3, 4]])
    >>>a*10
    array([[10, 20],
           [30, 40]])

異なる形状

ベクトルと行列との計算では、ベクトルが行列形状に拡張され計算される。

>>>a=np.array([[1, 2], [3, 4]])
>>>b=np.array([10,20])
a*b
array([[10, 40],
       [30, 80]])

要素へのアクセス

インデックス

>>> a=np.array([[51, 55], [14, 19], [0, 4]])
>>> print(a)
[[51 55]
 [14 19]
 [ 0  4]]
>>>a[0]
array([51, 55])
>>>a[0][1]
55

ベクトル化 & 抽出

  • ベクトル化
    >>> a=np.array([[51, 55], [14, 19], [0, 4]])
    >>> a=a.flatten()
    >>> print(a)
    [51 55 14 19  0  4]
  • 抽出方法1
    >>> a[np.array([0,2,4])]
    array([51, 14,  0])
  • 抽出方法2
    >>>a>15 # 15より大きい値を調査。
    array([ True,  True, False,  True, False, False], dtype=bool)
    >>>a[a>15] # 15より大きい値を抽出。
    array([51, 55, 19])

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2017-07-18 (火) 16:43:39 (1290d)