Python × 資料分析

Numpy Part I


Kristen Chan

Agenda


  • 引入 numpy 套件
  • list 轉為 ndarray
  • 計算平均數、標準差
  • list VS. ndarray

Note

  • 支援科學計算
    • 向量、矩陣運算。 e.g. 加法、減法、乘法

  • 主要的物件是 Numpy 陣列 (ndarray)
    • 是一個數學物件。 e.g. 一個向量、一個矩陣

  • 使用 Numpy 向量化操作比使用 Python list 更快
  • 匯入 Numpy
    import numpy as np
    

引入 numpy 套件

引入 numpy 套件


  • import numpy

  • import numpy as np
    np 來代表 numpy

將 list 轉為 ndarray

list 轉為 ndarray


  • numpy.array( x )

  • np.array( x )

x 為一個 list 且 元素 x 形式:[ 1,2,3 ]

list 轉為 ndarray


引入 numpy 套件

In [1]:
import numpy
In [2]:
numpy.array([1,2,3])
Out[2]:
array([1, 2, 3])
In [3]:
type(numpy.array([1,2,3]))
Out[3]:
numpy.ndarray

list 轉為 ndarray


引入 numpy 套件,並以 np 代表 numpy 套件

In [4]:
import numpy as np
In [5]:
np.array([1,2,3])
Out[5]:
array([1, 2, 3])

Note

In [6]:
weather_array = numpy.array([ 'Taipei' , 18.5 , 'rainy' ])
print(weather_array)
['Taipei' '18.5' 'rainy']

ndarray 只接受同一種資料型態

Exercise

Q. 利用 numpy 套件,將 Taipei 這個 list 轉為一個名為 Temperature_Taipei 的 ndarray

Taipei = [24,23,24,19,20,22,22]

Answers

In [7]:
Taipei = [24,23,24,19,20,22,22]
Temperature_Taipei = np.array(Taipei)
In [8]:
print(Temperature_Taipei)
print(type(Temperature_Taipei))
[24 23 24 19 20 22 22]
<class 'numpy.ndarray'>

計算平均數、標準差

計算平均數、標準差


  • 平均數

    • .mean()
    • np.mean( x )
  • 標準差

    • np.std( x )

計算平均數、標準差


平均數

In [9]:
Temperature_Taipei.mean()
Out[9]:
22.0
In [10]:
np.mean(Temperature_Taipei)
Out[10]:
22.0

標準差

In [11]:
np.std(Temperature_Taipei)
Out[11]:
1.7728105208558367

Exercise

Q. 利用 numpy 套件,計算 Keelung 未來一週的平均溫度

Keelung = [22, 20, 21, 18, 18, 19, 21]

Answers

In [12]:
Keelung = np.array([22,20,21,18,18,19,21])
In [13]:
print('Keelung 未來一週的平均溫度 : ',Keelung.mean())
Keelung 未來一週的平均溫度 :  19.8571428571

list VS. ndarray

list VS. ndarray


Review

list 不能做逐項計算( element-wise )

現在有一個未來一週 Taipei 的溫度( Temperature_Taipei ),希望可以將這些溫度從攝氏轉為華氏。

In [14]:
Temperature_Taipei = [22, 24, 19, 19, 30, 21, 25]

公式: $Fahrenheit = Celsius × (9/5) + 32$

list VS. ndarray


Review

list 不能做逐項計算( element-wise )

In [15]:
Temperature_Taipei_Fahrenheit = (Temperature_Taipei)*(9/5)+32
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-15-c35a0006725f> in <module>()
----> 1 Temperature_Taipei_Fahrenheit = (Temperature_Taipei)*(9/5)+32

TypeError: can't multiply sequence by non-int of type 'float'

list VS. ndarray


ndarray 可以做逐項計算( element-wise )

In [16]:
Temperature_Taipei_ndarray = np.array(Temperature_Taipei)
In [17]:
Temperature_Taipei_Fahrenheit = (Temperature_Taipei_ndarray)*(9/5)+32
print(Temperature_Taipei_Fahrenheit)
[ 71.6  75.2  66.2  66.2  86.   69.8  77. ]