2017年8月15日 星期二

Python_numpy

Python_numpy

numpy能夠快速的操作多重維度陣列,具備平行處理能力,就連pandas也跟numpy息息相關。
numpy的底層為c與fortran

IMPORT

import numpy as np  #  大家習慣as np
ndarray的關鍵屬性是維度(D)、形狀(S)與數值型別(dtype),並且可原地改變形狀,變更陣列的維度!

建立陣列

範例_reshape:調整陣列維度與形狀

調整陣列維度與形狀
#  D=1, S=(8,), dtype=int64
a = np.array([1, 2, 3, 4, 5, 6, 7, 8])
#  D=2, S=(2, 4), dtype=int64
a = a.reshape([2, 4])
#  D=3, S=(2, 2, 2), dtype=int64
a = a.reshape([2, 2, 2])

範例_astype:調整型別

x = np.array([[1, 2, 3], [4, 5, 6]], np.int32)
x.shape
x.shape=(6,)
x = x.astype('int64')
x.dtype

範例_zeros:建立填滿0的陣列

需注意,以此方式產生的陣列預設型別為float64
a = np.zeros([2, 3])

範例_ones:建立填滿1的陣列

需注意,以此方式產生的陣列預設型別為float64
a = np.ones([4, 5])


範例_random:亂數建立陣列

亂數的範圍為0-1
a = np.random.random((2, 3))

範例_linspace:產生平均間隔陣列

#  產生陣列,5個2-10的平均間隔,
a = np.linspace(2, 10, 5)

範例_arange:產生平均間隔陣列

不同於linsapce,arange不會有最大值
#  產生一個2-10(不包含10)並且step=2的陣列
a = np.arange(2, 10, 2)
a = np.arange(6)  #  產生一個0-5的陣列

陣列索引與切片

a = np.array([1, 2, 3, 4, 5, 6])
a[3]  #  4
a[2,3]  #  3,4
a[:4:2]  #  2,4
a[::-1]  #  6,5,4,3,2,1 反轉陣列

陣列計算

範例_基礎計算(加、減、乘、除)

a = np.array([1, 2, 3, 4, 5, 6])
a = a.reshape([2, 3])
a
a+2
a-2
a*2
a/2

如果用浮點去處理,其陣列結果型別也會跟著改變!

範例_布林計算

a = np.array([1, 2, 3, 4, 5, 6])
a < 4

範例_mean:取得平均值

a = np.array([1, 2, 3, 4, 5, 6])
a = a.reshape((2, 3))
a
a.mean()
#  取第二軸平均值
a.mean(axis=1)
a.mean(axis=0)

範例_std:取得標準差

a = np.array([1, 2, 3, 4, 5, 6])
a = a.reshape((2, 3))
a
a.std()
#  取第二軸標準差
a.std(axis=1)
a.std(axis=0)

範例_min:取得最小值

a = np.array([1, 2, 3, 4, 5, 6])
a = a.reshape((2, 3))
a
a.min()
a.min(axis=1)
a.min(axis=0)

範例_sum:取得加總

a = np.array([1, 2, 3, 4, 5, 6])
a = a.reshape((2, 3))
a
a.sum()
a.sum(axis=1)
a.sum(axis=0)

範例_cumsum:取得累加

a = np.array([1, 2, 3, 4, 5, 6])
a = a.reshape((2, 3))
a
a.cumsum()
a.cumsum(axis=1)
a.cumsum(axis=0)

沒有留言:

張貼留言