LoginSignup
4
6

More than 5 years have passed since last update.

【python超入門①】~pythonを始めるうえで。Numpy,Scipy触り方編

Last updated at Posted at 2018-11-02

はじめに

最近のbuzzワードでよく出てくる、「データサイエンティスト」、「AI」、「ディープラーニング」....
企業もそうした人材の獲得に躍起になっているようですね。最近ではネット広告でもディープラーニングの講座を受けてみませんか~?みたいなものも増えていますね。

この記事の対象者は、これからpythonを勉強してみたい!興味がある!人や、勉強を始めたけどわけがわからん!だれかもう一度基礎を教えて...って人向けに書いています。すべての範囲を網羅しているわけではありません。例えば配列のソートや最大値、最小値の求め方なんかは他の記事やググればすぐ出てきますので、ここではあえて触れません。この記事を読んだ後、他の記事を見て「フムフム。これはあそこで読んだな。あいつはこれのことを言ってたんだな。」と思ってもらえたら本望です。この記事をステップアップのための土台にしてください!
私も勉強してみてつまずいた点も多くありましたので、そんなことも踏まえつつ分かりやすく書いていけたらと思います。どうぞお手柔らかに。

ほんとうはpandasにも触れていくつもりだったのですが、時間と筆者の体力の問題でこの記事ではNumpyとScipyまでになっています(ヒヨワ)。。。みなさんの反応も見つつ今後決めようかなとも思っていますので、ご意見ご指摘どしどしください。(一応表題が超入門①となっているのは続編書きたいからです。)

データサイエンティスト

昨今、ネットワークの急速な発展でデータの取集・活用が重要視されています。
これらのデータを有効に使い、データから会社の経営に必要な知見を引き出していこう!というのがデータサイエンティストです。しかし、「データサイエンティスト」には明確な定義がなく、対応範囲がかなり広いのでぼんやりとしたイメージしか持たれていないのが現状です。なので最近は自称データサイエンティスト(ドヤァ)がそこら中にいますね...

エセかそうでないかを判別するための一つの基準になるのは、データ分析をするうえで以下の3点の能力がどの程度のレベルにあるか、ですね。
・統計学の知識
・プログラミング力
・数学力
これらのスキルを高い水準で使いこなす人こそが、「データサイエンティスト」だと私は思います。
今はぼんやりしている「データサイエンティスト」ですが、もし目指すのであれば少なくとも自分の中では明確に定義をしておきたいですね。

環境構築

一言で言います。"習うより慣れろ"です。プログラミング経験者ならわかりますね。そういうことです。
まずは環境構築をすべし。

機械学習のためのPython環境構築 2018.05
インストール終わったらjupyternotebook開いて始めましょう。

そもそもなんでpython?

pythonはスクリプト言語で、ライブラリが充実していてすぐに使用できるためコーディングがしやすいのが特徴です。また、データを取得して加工、表にまとめる、グラフに描写などもできます。
JavaやCとはまた違った魅力がありますね。

python基礎

それでは、おなじみのHello,Worldいきましょうか!(定番)


print("Hello, world !")

きましたね。出力はこの一言で済んでしまいます。

次は配列です。

#入力
char = "apple"
char[0]
#出力
'a'

ここまでよろしいでしょうか。
自分でいろいろ試してみるとスクリプト言語の楽しさを実感できるのではないでしょうか。

Numpy

基本的な知識について学びます。Numpyは多次元配列を使用する際にインポートして使います。


#Numpyをインポート
import Numpy as np
#配列の作成 
huge = np.array([1,2,3,4,5,6,7,8,9])
huge
#出力
array([1,2,3,4,5,6,7,8,9])

importした後のas ~でNumpyのあだ名を決めてあげます。それ以降はつけたあだ名でメソッドの呼び出しができます。Numpyはこんなものです。

Scipy

こいつはちょっと気難しいやつですが、ビビることはありません。強気でいきますよ。
Scipyは主に複雑な計算をするために使うモジュールで、線形代数や固有値固有ベクトル、などを利用する際に使用します。
(懐かしい数3、数Cですが統計の時に用いることもあるんです。。。)
インポートして簡単な計算をしてみましょうか。

import scipy as sp
import scipy.linalg as linalg
from scipy.optimize import minimize_scalar
#配列の作成
huge = np.array([1,2,3],[4,5,6],[7,8,9])

#行列式、逆行列を求める
print('行列式',linalg.det(huge))
print('逆行列',linalg.inv(huge))

固有値・固有ベクトルいきますよ

#固有値、固有ベクトル
eig_value,eig_vector = linalg.eig(huge)
print('固有値',eig_value)
print('固有値ベクトル',eig_vector)

こんな感じでがっつり数学やっていくのがScipyですね。ほかにも方程式の解求めてくれたりもします。

おわりに

続編のPandas、matlibplot編はこの記事のフィードバックを基に頑張って書いていきます。
みなさま暖かく見守ってください。

4
6
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
6