Enviar pesquisa
Carregar
Introduction to NumPy & SciPy
•
18 gostaram
•
9,343 visualizações
Shiqiao Du
Seguir
Tokyo.SciPy 2011/8/28 で使用
Leia menos
Leia mais
Tecnologia
Educação
Denunciar
Compartilhar
Denunciar
Compartilhar
1 de 38
Baixar agora
Baixar para ler offline
Recomendados
NumPyが物足りない人へのCython入門
NumPyが物足りない人へのCython入門
Shiqiao Du
Cython intro prelerease
Cython intro prelerease
Shiqiao Du
NumPy闇入門
NumPy闇入門
Ryosuke Okuta
Cython ことはじめ
Cython ことはじめ
gion_XY
Pythonデータ分析 第3回勉強会資料 8章
Pythonデータ分析 第3回勉強会資料 8章
Makoto Kawano
Python for Data Anaysis第2回勉強会4,5章
Python for Data Anaysis第2回勉強会4,5章
Makoto Kawano
Wrapping a C++ library with Cython
Wrapping a C++ library with Cython
fuzzysphere
for関数を使った繰り返し処理によるヒストグラムの一括出力
for関数を使った繰り返し処理によるヒストグラムの一括出力
imuyaoti
Recomendados
NumPyが物足りない人へのCython入門
NumPyが物足りない人へのCython入門
Shiqiao Du
Cython intro prelerease
Cython intro prelerease
Shiqiao Du
NumPy闇入門
NumPy闇入門
Ryosuke Okuta
Cython ことはじめ
Cython ことはじめ
gion_XY
Pythonデータ分析 第3回勉強会資料 8章
Pythonデータ分析 第3回勉強会資料 8章
Makoto Kawano
Python for Data Anaysis第2回勉強会4,5章
Python for Data Anaysis第2回勉強会4,5章
Makoto Kawano
Wrapping a C++ library with Cython
Wrapping a C++ library with Cython
fuzzysphere
for関数を使った繰り返し処理によるヒストグラムの一括出力
for関数を使った繰り返し処理によるヒストグラムの一括出力
imuyaoti
Chainerの使い方と自然言語処理への応用
Chainerの使い方と自然言語処理への応用
Seiya Tokui
R高速化
R高速化
Monta Yashi
R-hpc-1 TokyoR#11
R-hpc-1 TokyoR#11
Shintaro Fukushima
Rの高速化
Rの高速化
弘毅 露崎
Intoroduction of Pandas with Python
Intoroduction of Pandas with Python
Atsushi Hayakawa
CuPy解説
CuPy解説
Ryosuke Okuta
PyCon2020 Pythonで競プロをしよう! 〜入門者が知っておくべき高速化Tips〜
PyCon2020 Pythonで競プロをしよう! 〜入門者が知っておくべき高速化Tips〜
Kosaku Ono
2013.07.15 はじパタlt scikit-learnで始める機械学習
2013.07.15 はじパタlt scikit-learnで始める機械学習
Motoya Wakiyama
PyOpenCLによるGPGPU入門 Tokyo.SciPy#4 編
PyOpenCLによるGPGPU入門 Tokyo.SciPy#4 編
Yosuke Onoue
科学技術計算関連Pythonパッケージの概要
科学技術計算関連Pythonパッケージの概要
Toshihiro Kamishima
研究生のためのC++ no.2
研究生のためのC++ no.2
Tomohiro Namba
Real World OCamlを読んでLispと協調してみた
Real World OCamlを読んでLispと協調してみた
blackenedgold
(define)なしで再帰関数を定義する
(define)なしで再帰関数を定義する
blackenedgold
数式をnumpyに落としこむコツ
数式をnumpyに落としこむコツ
Shuyo Nakatani
111015 tokyo scipy2_ディスカッション
111015 tokyo scipy2_ディスカッション
Shohei Hido
関数型プログラミング入門 with OCaml
関数型プログラミング入門 with OCaml
Haruka Oikawa
2015年9月18日 (GTC Japan 2015) 深層学習フレームワークChainerの導入と化合物活性予測への応用
2015年9月18日 (GTC Japan 2015) 深層学習フレームワークChainerの導入と化合物活性予測への応用
Kenta Oono
boost tour 1.48.0 all
boost tour 1.48.0 all
Akira Takahashi
Pythonデータ分析 第4回勉強会資料 12章
Pythonデータ分析 第4回勉強会資料 12章
Makoto Kawano
研究生のためのC++ no.4
研究生のためのC++ no.4
Tomohiro Namba
エクセルで統計分析 統計プログラムHADについて
エクセルで統計分析 統計プログラムHADについて
Hiroshi Shimizu
Raspberry Pi and Scientific Computing [SciPy 2012]
Raspberry Pi and Scientific Computing [SciPy 2012]
Samarth Shah
Mais conteúdo relacionado
Mais procurados
Chainerの使い方と自然言語処理への応用
Chainerの使い方と自然言語処理への応用
Seiya Tokui
R高速化
R高速化
Monta Yashi
R-hpc-1 TokyoR#11
R-hpc-1 TokyoR#11
Shintaro Fukushima
Rの高速化
Rの高速化
弘毅 露崎
Intoroduction of Pandas with Python
Intoroduction of Pandas with Python
Atsushi Hayakawa
CuPy解説
CuPy解説
Ryosuke Okuta
PyCon2020 Pythonで競プロをしよう! 〜入門者が知っておくべき高速化Tips〜
PyCon2020 Pythonで競プロをしよう! 〜入門者が知っておくべき高速化Tips〜
Kosaku Ono
2013.07.15 はじパタlt scikit-learnで始める機械学習
2013.07.15 はじパタlt scikit-learnで始める機械学習
Motoya Wakiyama
PyOpenCLによるGPGPU入門 Tokyo.SciPy#4 編
PyOpenCLによるGPGPU入門 Tokyo.SciPy#4 編
Yosuke Onoue
科学技術計算関連Pythonパッケージの概要
科学技術計算関連Pythonパッケージの概要
Toshihiro Kamishima
研究生のためのC++ no.2
研究生のためのC++ no.2
Tomohiro Namba
Real World OCamlを読んでLispと協調してみた
Real World OCamlを読んでLispと協調してみた
blackenedgold
(define)なしで再帰関数を定義する
(define)なしで再帰関数を定義する
blackenedgold
数式をnumpyに落としこむコツ
数式をnumpyに落としこむコツ
Shuyo Nakatani
111015 tokyo scipy2_ディスカッション
111015 tokyo scipy2_ディスカッション
Shohei Hido
関数型プログラミング入門 with OCaml
関数型プログラミング入門 with OCaml
Haruka Oikawa
2015年9月18日 (GTC Japan 2015) 深層学習フレームワークChainerの導入と化合物活性予測への応用
2015年9月18日 (GTC Japan 2015) 深層学習フレームワークChainerの導入と化合物活性予測への応用
Kenta Oono
boost tour 1.48.0 all
boost tour 1.48.0 all
Akira Takahashi
Pythonデータ分析 第4回勉強会資料 12章
Pythonデータ分析 第4回勉強会資料 12章
Makoto Kawano
研究生のためのC++ no.4
研究生のためのC++ no.4
Tomohiro Namba
Mais procurados
(20)
Chainerの使い方と自然言語処理への応用
Chainerの使い方と自然言語処理への応用
R高速化
R高速化
R-hpc-1 TokyoR#11
R-hpc-1 TokyoR#11
Rの高速化
Rの高速化
Intoroduction of Pandas with Python
Intoroduction of Pandas with Python
CuPy解説
CuPy解説
PyCon2020 Pythonで競プロをしよう! 〜入門者が知っておくべき高速化Tips〜
PyCon2020 Pythonで競プロをしよう! 〜入門者が知っておくべき高速化Tips〜
2013.07.15 はじパタlt scikit-learnで始める機械学習
2013.07.15 はじパタlt scikit-learnで始める機械学習
PyOpenCLによるGPGPU入門 Tokyo.SciPy#4 編
PyOpenCLによるGPGPU入門 Tokyo.SciPy#4 編
科学技術計算関連Pythonパッケージの概要
科学技術計算関連Pythonパッケージの概要
研究生のためのC++ no.2
研究生のためのC++ no.2
Real World OCamlを読んでLispと協調してみた
Real World OCamlを読んでLispと協調してみた
(define)なしで再帰関数を定義する
(define)なしで再帰関数を定義する
数式をnumpyに落としこむコツ
数式をnumpyに落としこむコツ
111015 tokyo scipy2_ディスカッション
111015 tokyo scipy2_ディスカッション
関数型プログラミング入門 with OCaml
関数型プログラミング入門 with OCaml
2015年9月18日 (GTC Japan 2015) 深層学習フレームワークChainerの導入と化合物活性予測への応用
2015年9月18日 (GTC Japan 2015) 深層学習フレームワークChainerの導入と化合物活性予測への応用
boost tour 1.48.0 all
boost tour 1.48.0 all
Pythonデータ分析 第4回勉強会資料 12章
Pythonデータ分析 第4回勉強会資料 12章
研究生のためのC++ no.4
研究生のためのC++ no.4
Destaque
エクセルで統計分析 統計プログラムHADについて
エクセルで統計分析 統計プログラムHADについて
Hiroshi Shimizu
Raspberry Pi and Scientific Computing [SciPy 2012]
Raspberry Pi and Scientific Computing [SciPy 2012]
Samarth Shah
VBAで数値計算 10 逆行列と疑似逆行列
VBAで数値計算 10 逆行列と疑似逆行列
Katsuhiro Morishita
The Joy of SciPy
The Joy of SciPy
kammeyer
Scientific Computing with Python Webinar 9/18/2009:Curve Fitting
Scientific Computing with Python Webinar 9/18/2009:Curve Fitting
Enthought, Inc.
今日からわかる!ソーシャルグラフ解析
今日からわかる!ソーシャルグラフ解析
Daichi Onodera
2部グラフとソーシャルネットワーク
2部グラフとソーシャルネットワーク
Hiroko Onari
2章グラフ理論スピード入門
2章グラフ理論スピード入門
Teruo Kawasaki
距離と分類の話
距離と分類の話
考司 小杉
『繋がり』を見る: Cytoscapeと周辺ツールを使ったグラフデータ可視化入門
『繋がり』を見る: Cytoscapeと周辺ツールを使ったグラフデータ可視化入門
Keiichiro Ono
High performance python computing for data science
High performance python computing for data science
Takami Sato
Destaque
(11)
エクセルで統計分析 統計プログラムHADについて
エクセルで統計分析 統計プログラムHADについて
Raspberry Pi and Scientific Computing [SciPy 2012]
Raspberry Pi and Scientific Computing [SciPy 2012]
VBAで数値計算 10 逆行列と疑似逆行列
VBAで数値計算 10 逆行列と疑似逆行列
The Joy of SciPy
The Joy of SciPy
Scientific Computing with Python Webinar 9/18/2009:Curve Fitting
Scientific Computing with Python Webinar 9/18/2009:Curve Fitting
今日からわかる!ソーシャルグラフ解析
今日からわかる!ソーシャルグラフ解析
2部グラフとソーシャルネットワーク
2部グラフとソーシャルネットワーク
2章グラフ理論スピード入門
2章グラフ理論スピード入門
距離と分類の話
距離と分類の話
『繋がり』を見る: Cytoscapeと周辺ツールを使ったグラフデータ可視化入門
『繋がり』を見る: Cytoscapeと周辺ツールを使ったグラフデータ可視化入門
High performance python computing for data science
High performance python computing for data science
Semelhante a Introduction to NumPy & SciPy
Introduction to Chainer and CuPy
Introduction to Chainer and CuPy
Kenta Oono
Python 機械学習プログラミング データ分析ライブラリー解説編
Python 機械学習プログラミング データ分析ライブラリー解説編
Etsuji Nakai
ディープラーニングフレームワーク とChainerの実装
ディープラーニングフレームワーク とChainerの実装
Ryosuke Okuta
なにわテック20180127
なにわテック20180127
Natsutani Minoru
関数型言語&形式的手法セミナー(3)
関数型言語&形式的手法セミナー(3)
啓 小笠原
110828 tokyo scipy1_hido_dist
110828 tokyo scipy1_hido_dist
Shohei Hido
PythonでDeepLearningを始めるよ
PythonでDeepLearningを始めるよ
Tanaka Yuichi
Coq 20100208a
Coq 20100208a
tmiya
Introduction to Chainer (LL Ring Recursive)
Introduction to Chainer (LL Ring Recursive)
Kenta Oono
第3回 JavaScriptから始めるプログラミング2016
第3回 JavaScriptから始めるプログラミング2016
kyoto university
ji-5. 繰り返し計算
ji-5. 繰り返し計算
kunihikokaneko1
lispmeetup#63 Common Lispでゼロから作るDeep Learning
lispmeetup#63 Common Lispでゼロから作るDeep Learning
Satoshi imai
How wonderful to be (statically) typed 〜型が付くってスバラシイ〜
How wonderful to be (statically) typed 〜型が付くってスバラシイ〜
Hiromi Ishii
PFI Christmas seminar 2009
PFI Christmas seminar 2009
Preferred Networks
Deep learning実装の基礎と実践
Deep learning実装の基礎と実践
Seiya Tokui
[GTCJ2018]CuPy -NumPy互換GPUライブラリによるPythonでの高速計算- PFN奥田遼介
[GTCJ2018]CuPy -NumPy互換GPUライブラリによるPythonでの高速計算- PFN奥田遼介
Preferred Networks
Python standard 2022 Spring
Python standard 2022 Spring
anyakichi
Thinking in Cats
Thinking in Cats
Eugene Yokota
PythonによるDeep Learningの実装
PythonによるDeep Learningの実装
Shinya Akiba
東大生向けデータ解析講座 第2回 2017/12/29
東大生向けデータ解析講座 第2回 2017/12/29
西岡 賢一郎
Semelhante a Introduction to NumPy & SciPy
(20)
Introduction to Chainer and CuPy
Introduction to Chainer and CuPy
Python 機械学習プログラミング データ分析ライブラリー解説編
Python 機械学習プログラミング データ分析ライブラリー解説編
ディープラーニングフレームワーク とChainerの実装
ディープラーニングフレームワーク とChainerの実装
なにわテック20180127
なにわテック20180127
関数型言語&形式的手法セミナー(3)
関数型言語&形式的手法セミナー(3)
110828 tokyo scipy1_hido_dist
110828 tokyo scipy1_hido_dist
PythonでDeepLearningを始めるよ
PythonでDeepLearningを始めるよ
Coq 20100208a
Coq 20100208a
Introduction to Chainer (LL Ring Recursive)
Introduction to Chainer (LL Ring Recursive)
第3回 JavaScriptから始めるプログラミング2016
第3回 JavaScriptから始めるプログラミング2016
ji-5. 繰り返し計算
ji-5. 繰り返し計算
lispmeetup#63 Common Lispでゼロから作るDeep Learning
lispmeetup#63 Common Lispでゼロから作るDeep Learning
How wonderful to be (statically) typed 〜型が付くってスバラシイ〜
How wonderful to be (statically) typed 〜型が付くってスバラシイ〜
PFI Christmas seminar 2009
PFI Christmas seminar 2009
Deep learning実装の基礎と実践
Deep learning実装の基礎と実践
[GTCJ2018]CuPy -NumPy互換GPUライブラリによるPythonでの高速計算- PFN奥田遼介
[GTCJ2018]CuPy -NumPy互換GPUライブラリによるPythonでの高速計算- PFN奥田遼介
Python standard 2022 Spring
Python standard 2022 Spring
Thinking in Cats
Thinking in Cats
PythonによるDeep Learningの実装
PythonによるDeep Learningの実装
東大生向けデータ解析講座 第2回 2017/12/29
東大生向けデータ解析講座 第2回 2017/12/29
Último
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
FumieNakayama
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
Hiroshi Tomioka
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NTT DATA Technology & Innovation
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
Yuki Kikuchi
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
博三 太田
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
akihisamiyanaga1
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
FumieNakayama
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
UEHARA, Tetsutaro
Último
(8)
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
Introduction to NumPy & SciPy
1.
NumPy & SciPy
入門
2.
Contents NumPy & Scipy
の機能紹介 → ndarrayクラスの操作を中心に説明 NumPy & SciPy を使ったプログラミング → 線形回帰、 主成分分析, K-Means → Pythonの特徴であるOOPも取り入れる ndarrayのviewと参照渡し
3.
Contents NumPy & Scipy
の機能紹介 → ndarrayクラスの操作を中心に説明 NumPy & SciPy を使ったプログラミング → 線形回帰、 主成分分析, K-Means → Pythonの特徴であるOOPも取り入れる ndarrayのviewと参照渡し
4.
What is NumPy/SciPy? Pythonで数値計算 数値計算 ≒
繰り返し作業、ループ Pyhton : ループが遅い、その他諸々は書きやすい。 C,Fortran : ループが速い、冗長な表現が多い。 ループのある作業をC,Fortranで書き、 それをpythonから呼べたら便利!
5.
What is NumPy/SciPy? NumPy ●
Cで実装されたndarray class ● Universal Function ● 乱数の生成 ● f2pyによるFortranとの連携 SciPy ● NumPyを元に様々な数値計算の関数の集合 ● BLAS/LAPACKを使った行列計算 ● FFT,クラスタリング、関数最適化 などなど
6.
What is NumPy & SciPy? numpy.ndarray class 数値計算用のN次元配列
Homogeneous N-dimensional Array 各要素の型がすべて同じ → CやFortranの配列 強力なインデクシング表現 A[0:10, 3] etc Universal functionによる直感的な数式の表現 y[:] = 3.0 * np.sin(x[:]) + x[:]**2 + e[0,:] etc
7.
ndarray class ndarrayの生成 ✔np.array : listなどをndarrayに変換 ✔np.empty
: 任意のサイズを確保,Cのmalloc相当 ✔np.zeros : 0で初期化,Cのcalloc相当 ✔np.ones : 1で初期化 ✔np.identity : 単位行列 etc
8.
ndarray class ndarrayの属性 ✔dtype : 各要素の型,
float64 etc ✔ndim : 配列の次元 ✔shape : 各次元の要素数のtuple ✔size : 1次元にした時の長さ ✔data : 実際のデータがbuffer objectとして保持されている。
9.
ndarray class 要素の参照、代入 ✔個々の参照 : x[2],
x[-1], A[1, 2], B[3, 2, 5] ✔スライスによる一括参照 : x[from:to:step] e.g. x[2:6], x[::-1], A[1, :], A[::2, :6 ✔1つの要素へ代入 : x[4] = 10.0 ✔スライスを使った代入 : x[1:5] = 3.0, A[0, 1:7] = x[0:6]
10.
ndarray class Universal Functions 配列のすべての要素に対して同じ操作を施す。 (elementwise
operation) 基本的にFortran90の配列演算と同じ。 ✔b[:] = 2.0 * a[:] + 1.0 ✔B[:,:] = np.exp(A[:,:]) ✔C[:,1:10] = B[:,3:12] + np.sin(B[:,:9]) ✔D = C[:,1:10] * C[:,1:10] ← 行列積ではないので注意!
11.
ndarray class Broadcast : 配列形状の自動調整
EuroScipy 2010, Python Scientific Notes より引用
12.
ndarray class Broadcastをうまく使うためのコツ np.newaxisを使って配列の次元を揃える
✔A[10,3] に x[3] を足す → A[:,:] + x[np.newaxis,:] for i in xrange(3): A[:,i] += x[i] 相当の計算になる。(もちろんこれより速い。) ✔B[100,4,10] に y[4] を掛る → B[:,:,:] * y[np.newaxis,:,np.newaxis] for i in xrange(4): B[:,i,:] *= y[i]
13.
ndarray class Fancy Indexing
✔ixs = [0,2,2,4], x[ixs] → array(x[0],x[2],x[2],x[4]) ✔np.where(x[:]>1) → 1より大きいxのインデックスの配列 ✔np.where(x[:]>0,x,10) → xの0以上の要素をすべて10にする ✔mask = A[:,:] > 0 → maskはbool型でAと同じshapeをもつndarray → A[mask]は0以上のAの要素が入った1D-ndarray ✔mask = np.sum(A[:,:]**2,1) < 0, inner_sphere = A[mask,:] → 球の内側のデータ
14.
ndarray class io関係 ✔np.savetxt :
ファイルにndarrayを書き込む np.savetxt(“data.log”,data) ✔np.loadtx : ファイルからndarrayに読み込む data = np.loadtxt(“data.log”) ✔PythonのbuiltinのPickleも使える 大きいデータをバイナリで保存する際に便利
15.
NumPyと 乱数 numpy.random
✔Mersenne Twisterによる乱数生成 ✔rand : [0,1)上の一様乱数 r = rand(100,3) → 一度に生成して配列に格納 ✔randn : 標準正規乱数、randと同様に配列に格納もできる ✔dirichlet, normal, t, beta, poissson 他多数 shapeを引数にとって配列に格納もできる。 rand,randnとは書式が多少違うので注意!
16.
NumPyの統計関数 ✔np.max, np.min :
最大最小 ✔np.argmax, np.argmin : 最大最小の位置 ✔np.mean, np.var, np.std : 平均、分散、標準偏差 ✔np.sort, np.argsort : 配列のソートとそのインデックス これらは任意次元のndarrayとaxisを引数にとって任意の 軸に対して実行可 ✔np.cov : 共分散,データは2D-ndarrayのみ shapeは(ndim,nobs)の順なので注意!
17.
NumPy/SciPyで行列計算 np.dot
(BLASのラッパー) np.dot(a, b)[i,j,k,m] = sum(a[i,j,:] * b[k,:,m]) 例 x,y 1D-array, A,B 2D-array ● dot(x,y) → スカラ, BLASの***dot相当 ● dot(A,x) → ベクター, BLASの***mv相当 ● dot(A,B) → 行列, BLASの***mm相当(dgemmとか) その他、 outer, tensordotとかもある
18.
NumPy/SciPyで行列計算 scipy.linalg (LAPACKのラッパー)
● det : 行列式 ● inv, pinv : 逆行列、 擬似逆行列 ● solve, lstsq : 連立方程式の解、最小自乗解 Ax = b → x = solve(A,b) ● eig, eigh, svd : (一般化)固有値分解、 特異値分解 (***ev,***gv,***svd) eig_val, eig_vec = eigh(A) ● 行列の因子分解 lu, qr, cholesky etc
19.
特殊関数 scipy.special ●ほとんどがUniversal
Functionなのでndarrayを食わせると 一気に計算してくれる。 ● gamma関数群 (分布関係でよく使う) gamma, gammaln, digamma ● ベッセル関数、楕円関数など諸々 (あまりつかったことない...)
20.
そ の他諸々 ●
scipy.spatial : KD-treeとか距離計算とか ● scipy.sparse : 疎行列とその線形代数 ● scipy.cluster : 階層/非階層クラスタリング ● scipy.fftpack : Fourier変換 ● scipy.interpolate : スプライン補完とか ● scipy.optimize : 関数最適化、非線形フィッティングとか ● scipy.constants : 科学定数集
21.
Matplotlib とにもかくにも import matplotlib.pyplot
as plt ● plot(x, y ,[symb, label, linewidth]) : xとyをsymbでプロット ● legend : labelを表示 ● xlabel, xlim, xtics : 軸の表示設定、yも同様 ● show : 画面にプロットの結果を表示 ● savefig : 画像ファイルにプロットを保存 (png, eps, svg, pdf)
22.
便利なPythonのパッ ケ ージ scikits.learn
: NumPy&SciPyを使った機械学習のライブラリ ● PyMC : MCMCによるベイズ推定 ● Networkx : グラフアルゴリズム ● OpenOpt : 関数最適化 (Pythonインターフェイスあり) ● OpenCV : 画像処理 (Pythonインターフェイスあり) ● NLTK : 自然言語処理 ● pyMPI, PyCUDA : MPI, CUDAへのインターフェース ● Biopython, PyMol, MODELLER : バイオインフォマティクス ● pygresql, mysqldb, pysqlite2 : SQLへのインターフェイス ● Universal Feed Parser : RSS, ATOMのパーサー ● PyPI <http://pypi.python.org/pypi> で欲しいパッケージを検索できる。
23.
Contents NumPy & Scipy
の機能紹介 → ndarrayクラスの操作を中心に説明 NumPy & SciPy を使ったプログラミング → 線形回帰、 主成分分析, K-Means → Pythonの特徴であるOOPも取り入れる ndarrayのviewと参照渡し
24.
NumPy & SciPy
を 用いたプロ グラ ミ ン グ 大原則 ●極力ループにPythonのforではなく、NumPy対応する 関数を使う。(特にデータ数に対するループは厳禁!) ● 大抵の操作はあるのでよく探すこと! ●ホットスポットの検出にはPythonのプロファイラが便 利。 ● それでもやっぱり遅いよ! → f2py, Cythonなどを検討
25.
NumPy & SciPy
を 用いたプロ グラ ミ ン グ Principal Component Analysis 解き方 共分散行列の固有値分解 or データ行列の特異値分解 実装方 (共分散行列版) 1.np.covを使って共分散行列を計算 2.scipy.linalg.eighを使って固有値分解 3.np.dotを使って射影 詳細はソースコード(pca.py)を用いて説明
26.
NumPy & SciPy
を 用いたプロ グラ ミ ン グ Least Square Fit or 解き方 pseudo-inverse 実装方 a) scipy.linalg.svdをコール ← 一番低レベル b) scipy.linalg.pinvをコール c) scipy.linalg.lstsqをコール 詳細はソースコード(regression.py)のを用いて説明
27.
NumPy & SciPy
を 用いたプロ グラ ミ ン グ K-Means (理論) E-Step ● M-Step ●
28.
NumPy & SciPy
を 用いたプロ グラ ミ ン グ K-Means (実装) E- step ● 各サンプルに対してlnPの計算 (二次形式、Mahalanobis距離) → scipy.spatial.distance.cdist 各サンプルに対してlnP最大のクラスタ番号を選ぶ → np.argmax ●M-step c_n = c のサンプルの選択 → ndarrayのfancy indexing機能 平均、共分散の計算 → np.mean, np.cov 詳細はソースコード(kmeans.py)のを用いて説明
29.
Contents NumPy & Scipy
の機能紹介 → ndarrayクラスの操作を中心に説明 NumPy & SciPy を使ったプログラミング → 線形回帰、 主成分分析, K-Means → Pythonの特徴であるOOPも取り入れる ndarrayのviewと参照渡し
30.
ndarrayと view [1] A
= array([[1,2,3], [4,5,6], [7,8,9]]) [2] B = A[0] [3] B[0] = 10 A[0,0]の値は?
31.
ndarrayと view view :
同じメモリ領域を異なるndarrayオブジェクトで共有する機能 メモリを共有しているの配列の要素を変更すると、他の配列の対応 する値も変更される。 知らないとかなりハマる。 (体験談) viewを返す表現、関数 A.view() A[from:to] (スライス) A.T, np.transpose(A) (転置) A.reshape(shape), np.reshape(A,shape) (次元変換) A.swapaxes(a,b), np.swapaxes(A,a,b) (軸の交換) np.tile(A,(a,b,...)) (同じ配列を並べる。a,b.. = 1の時はもとのAとメモリを共有!) A.baseで参照元の配列の内容を見れる。
32.
ndarrayと view 同じメモリ領域を共有しているかを調べる方法 A.__array_interface__[“data”][0] がメモリの領域を指しているのでこれを比較する 例 def isMemoryShared(a,b):
mem_a = a.__array_interface__[“data”][0] mem_b = b.__array_interface__[“data”][0] return mem_a == mem_b メモリを共有したくないときはnp.copyを使う B = np.copy(A[1:3,:])
33.
a = a + 1, a += 1 ●a=a+1 実は一度コピーを作成するので初めと終わりの”a”は メモリ上では全くの別物。 ● a +=
1 aのメモリ上のデータを直接変更している。 (In-place Operation) ●np.exp(a,out=a) universal functionでoutを指定するとin-placeで計算 a.__array_interface__[“data”][0]で確認してみる。
34.
値渡し と 参照渡し
C言語では値渡しと参照渡しを使い分けられる。 値渡し (call by value) 参照渡し (call by reference) void f1(int x){ void f2(int *x){ x = x + 1; *x = *x + 1; } } → f1の外ではxの値は元のまま。 → f2の外でもxの値は1増える。
35.
値渡し と 参照渡し Pythonでは基本は値渡し!
だけど... 例外 ●リストの要素を変更 ●インスタンスのメンバーを変更 ●ndarrayの要素を変更 ●ndarrayをin-place operationで変更
36.
値渡し と 参照渡し
def npf1(x): # これはx自身が更新される x[0] = 1 def npf2(x): def npf3(x): # xは不変 # xは更新される x=x+1 x += 1 x.__array_interface__で確認! → mutate.py
37.
まとめ ●
NumPyのndarrayクラスの特徴であるindexingとunivesal functio よって数式を直感的にコードに変換できる。 ● ScipyをはじめとしたNumPyを使ったパッケージや他のPythonパッ ケージをうまく利用するといろいろできそう。 ● Pythonの特徴であるOOPとNumPyの高速な数値計算がうまく融 合してかなり効率的なプログラミングが可能。 ● ndarrayのviewの仕組みは知っておかないと意外とハマリやすい...
38.
Thanx for Listening!
Baixar agora