「大人の教養・知識・気付き」を伸ばすブログ

一流の大人(ビジネスマン、政治家、リーダー…)として知っておきたい、教養・社会動向を意外なところから取り上げ学ぶことで“気付く力”を伸ばすブログです。データ分析・語学に力点を置いています。 →現在、コンサルタントの雛になるべく、少しずつ勉強中です(※2024年1月21日改訂)。

MENU

Pythonによるデータ分析(その05/X)

 仕事上、早々に\mathrm{Python}を使えるようにしないといけないため、

を基に学んでいく。

3. NumPyの基礎:配列とベクトル演算

 \mathrm{NumPy}は"\mathrm{Numerical\ Python}"の意味で\mathrm{Python}での数値計算におけるもっとも重要な基本パッケージの1つである。
 \mathrm{NumPy}には以下のような特徴がある:

  • 高速な行列計算と柔軟なブロードキャストを提供する効率的な多次元配列である\mathrm{ndarray}
  • 高速に動作し、呼出しにループ記法を必要としない標準的な数学関数
  • ディスクへの配列の読み書きに加え、メモリマップファイル機能を提供する入出力機能
  • 行列計算、乱数生成、\mathrm{Fourirer}変換といった機能
  • \mathrm{C}\mathrm{C++}\mathrm{Fortran}へのインターフェース

 \mathrm{NumPy}\mathrm{C}言語呼び出しの\mathrm{API}があり、相互間へデータを渡すことができる。そのため\mathrm{C}\mathrm{C++}\mathrm{Fortran}で書かれた既存のコード資産のラッパーとしての位置づけを獲得してきた。\mathrm{NumPy}はそれ自身が数理モデリングやデータ分析手法を提供する訳ではないものの、\mathrm{NumPy}の配列や配列思考の計算手法を知っておくと、\mathrm{pandas}のような配列志向のツールを用いるのに便利である。

  • ベクトル化記法による高速な計算。データの変更、整頓、取り出しやフィルタリング、変換といったあらゆるデータ操作。
  • 一般的な配列操作。ソートや重複除外操作、集合演算。
  • 効率的な記述統計学的データ操作。それに必要なデータの結合・要約。
  • 種類の異なるデータセットに対する統合や結合などのデータ整理や関係データ処理。
  • 配列内での条件記述。ループを記述することなく配列内で直接\mathrm{if}-\mathrm{elif}-\mathrm{else}相当の制御を記述する。
  • グループ単位でのデータ操作。
#############################
### numpyのスピードを調査 ###
#############################

import numpy as np

num_mil = 1000000

my_arr = np.arange(num_mil)
my_list = list(range(num_mil))

%time for _ in range(10): my_arr2 = my_arr * 2
%time for _ in range(10): my_list2 = [x * 2 for x in my_list]

3.1 NumPy ndarray:多次元配列オブジェクト

 \mathrm{ndarray}に対する算術操作は、その配列要素全てに作用する。

import numpy as np

data = np.random.randn(2, 3)

# ndarrayに対する算術演算はすべての要素に適用される
print(data)
print(data*10)
print(data+data)

print(data.shape)

data.dtype
3.1.1 ndarrayの生成
#####################
### ndarrayの生成 ###
#####################

data1 = [6,7.6,8,0,1]
arr1 = np.array(data1)
print(arr1)

data2 = [[1,2,3,4],[5,6,7,8]]
arr2 = np.array(data2)
print(arr2)

# ListのListで定義されるNumPy配列は2次元配列である
print(arr2.ndim)
print(arr2.shape)

print(arr1.dtype)
print(arr2.dtype)

#
np.zeros(10)
np.ones(10)
関数 説明
\mathrm{array} 入力にリスト、タプル、\mathrm{Python}配列、その他列挙型のデータを受けて\mathrm{ndarray}を生成する。
\mathrm{asarray} \mathrm{ndarray}を生成する。
\mathrm{arange} \mathrm{Python}組み込みの\mathrm{range}関数と同じ動作で\mathrm{ndarray}を生成する。
\mathrm{ones,ones\_like} \mathrm{ones}は指定されたサイズの\mathrm{ndarray}を指定された\mathrm{dtype}で生成し、要素をすべて1で埋める。\mathrm{ones\_like}は引数に別の\mathrm{ndarray}などのシーケンスが多変数を受け、それをテンプレートとして要素をすべて1で埋めた\mathrm{ndarray}を生成する。
\mathrm{zeros,zeros\_like} \mathrm{ones},\mathrm{ones\_like}と同様に\mathrm{ndarray}を生成し、要素をすべて0で埋める。
\mathrm{empty,empty\_like} \mathrm{ones}\mathrm{ones\_like}と同様に\mathrm{ndarray}を生成するが、各要素は初期化されず不定のまま。
\mathrm{full,full_like} \mathrm{full}は指定されたサイズの\mathrm{ndarray}を指定された\mathrm{dtype}で生成し、要素をすべて指定された値で埋める。\mathrm{full\_ like}は引数に別の\mathrm{ndarray}などのシーケンスが多変数を受け、それをテンプレートとして要素をすべて指定された値で埋めた\mathrm{ndarray}を生成する。
\mathrm{eye,identity} n\times n単位行列となる\mathrm{ndarray}を生成する。\mathrm{identity}単位行列を生成する。\mathrm{eye}単位行列を生成し、更に列数を指定して切り出しできる。
プライバシーポリシー お問い合わせ