--- title: Python Module - Numpy tags: python, module, numpy --- [TOC] --- # Python Module - Numpy ```python= # Try it import numpy as np ``` :::danger If you are not have numpy module, install it. pip install numpy ::: ## Function - `np.array( list )` ```python= A = np.array([1, 2, 3]) B = np.array([4, 5, 6]) # 基本運算 A + B #array([5, 7, 9]) A - B #array([-3, -3, -3]) A B #array([ 4, 10, 18]) A / B #array([0.25, 0.4 , 0.5 ]) A 2 #array([1, 4, 9], dtype=int32) # 以上的運算為元素對元素的運算,故大小需相同 # 比較運算 C = np.arange(-2, 3) #array([-2, -1, 0, 1, 2]) C >= 0 #array([False, False, True, True, True]) # 其餘以此類推 # 透過比較運算取代元素 C[C < 0] = 99 #array([99, 99, 0, 1, 2]) ``` - `np.arange( start, end, incremnt )` - range is `[start, end)` ```python= a = np.arange(5) #array([0, 1, 2, 3, 4]) b = np.arange(7, 4, -1) #array([7, 6, 5]) ``` - `np.ones( shape, dtype=None, order='C' )` - shape: 矩陣大小(M,N) - dtype: 元素型別,Default is float64 ```python= np.ones( (2,2), dtype=int ) #array([[1, 1], [1, 1]]) ``` - `np.linspace( start, stop, num=50, endpoint=True )` - (start, stop) 等分 num 個點 - endpoint 決定 stop 是否納入 - `np.repeat( value, repeats, axis=None )` - `Return`: Array contains `repeats` times value ```python= # sales 2017 sales_2017 = pd.DataFrame([['chair',20],['sofa',24],['table',15]], columns=['product','sales_units']) # sales 2018 sales_2018 = pd.DataFrame([['chair',25],['sofa',10],['shelf',10]], columns=['product','sales_units']) # add year column in data frame 2017 sales_2017['year'] = np.repeat(2017, sales_2017.shape[0]) # add year column in data frame 2018 sales_2018['year'] = np.repeat(2018, sales_2018.shape[0]) sales = pd.concat([sales_2017,sales_2018], ignore_index=True) ``` - `np.linalg.inv( array )` - 找 `array` 的inverse - `np.linalg.norm( array )` - 取`array`的長度 - `np.linalg.det( array )` - 取`array`的determin - `np.loadtxt( filename.txt )` - `np.dot( A, B )` - Do that A dot B - `np.concatenate( (a1, a2, ...), axis=0, out=None, dtype=None, casting="same_kind" )` - Join a sequence of arrays along an existing axis - `out` - If provided, the destination to place the result. - `np.apply_along_axis(func1d, axis, arr, *args, **kwargs)` - Apply a function to 1-D slices along the given axis. #### Math Function - `np.sin( array )` - `np.cos( array )` - `np.exp( array )` - `np.log( array )` - `numpy.polyfit( x, y, deg, rcond=None, full=False, w=None, cov=False )` - Outputs a polynomial of degree deg that fits the points (x,y), minimizing the square error - `Return`: $[c_{deg}, c_{deg-1}, ..., c_1, c_0]$ ## Random Function - `np.random.randint( low, high=None, size=None, dtype='l' )` - `Return`: Array of random int in `[low, high)` - If `high` is None, then range is `[0, low)` - If `size` is None, then default size is one - `np.random.choice( array, size=None, replace=True, p=None )` - `Return`: A random sample from a given array - `p`: Probability - If `size` is None, then default size is one ```python= # roll a dice np.random.choice([1,2,3,4,5,6]) # roll a dice 10 times np.random.choice([1,2,3,4,5,6], size=10) # 0-->head, 1-->tail # toss a biased coin (80% probability of obtain head - 20% tail) np.random.choice([0,1],p=[0.8,0.2]) ``` - `numpy.random.permutation(x)` - `Return` ndarray - `x` is array-like instance - `np.random.binomial( n, p, size=None )` ## Array Function - `dot( array )` - 矩陣乘法 - `sum( axis=None )` - `axis` - `None`: 矩陣各元素總和 - `0`: 加總每一欄 - `1`: 加總每一列 - `min()` - 矩陣最小值 - `max()` - 矩陣最大值 - `mean()` - 矩陣平均值 - `reshape( row, column )` - 改變矩陣大小 - elements of array == row * column - `transpose()` - 轉置矩陣 - Use two bracket pairs instead of one. This creates a 2D array, which can be transposed, unlike the 1D array you create if you use one bracket pair. ```python= A = np.array([[5,4]]) #array([[5, 4]]) A_T = A.transpose() """ array([[5], [4]]) """ ``` - astype( dtype ) - 將矩陣元素型別轉換為`dtype` - `dtype`: `'int'`, `'float'`, ... - flatten( order='C' ) - `Return`: a copy of the array collapsed into one dimension . - `order` - `'C'` means to flatten in row-major (C-style) order. ```python= a = np.array([[2, 4], [6,8], [1,3], [5,7]], dtype='int') a.flatten() # array([2, 4, 6, 8, 1, 3, 5, 7]) ``` #### Array Operator ```python= a = np.array([[2, 4], [6,8], [1,3], [5,7]], dtype='int') a[2, :] # [1,3] a[:, 1] # [4, 8, 3, 7] a[1, 1] # 8 ```