numpy 學習總結

numpy 學習總結

做者:csj
更新時間:01.09html

email:59888745@qq.com數組

說明:因內容較多,會不斷更新 xxx學習總結;app

回主目錄:2017 年學習記錄和總結


#生成數組/使用astype/取值和賦值/ 數學運算 / 內置的建立數組的函數/ 文件輸入輸出 # Numpy是Python語言的一個library numpy # Numpy主要支持矩陣操做和運算 # Numpy很是高效,core代碼由C語言寫成 # pandas也是基於Numpy構建的一個library # 如今比較流行的機器學習框架(例如Tensorflow/PyTorch等等),語法都與Numpy比較接近 import numpy as np ## 數組簡介和數組的構造(ndarray) ##生成數組時能夠指定數據類型,若是不指定numpy會自動匹配合適的類型 # np1 = np.array([1,2,3],datetype=np.float64) #np1.datatype ##使用astype複製數組並轉換數據類型 # np1 = np.array([1,2,3]) #np2=np1.astype(np.float64) ##使用astype將float轉換爲int時小數部分被捨棄 # np1 = np.array([1.2,2.1,3.3]) #np2_int=np1.astype(np.int) ##Array indexing/數組取值和賦值 在兩個維度上分別按照[:2]和[1:3]進行切片,取須要的部分 # a =np.array([[1,2,3],[4,5,6]]) # b =a[:2,1:3] #row,clo # b ##用dtype來看numpy數組中元素的類型: #b.dtype ##數組取值和賦值 # np1 = np.array([1,2,3]) # np1 = np.array([1,2,3],datetype=np.float64) #np1.datatype # np1.shape # np1[0] # np2=np.array([[1,2,3],[4,5,6]]) # np2 # np2[0,1] ##內置的建立數組的函數 # np1 = np.zeros((3,3)) # np1 # np2 = np.ones((3,3)) # np2 # np3=np.full((3,3),0) # np3 # np4=np.eye(3,3) # 對角矩陣(對角元素爲1) # np4 # np5=np.random.random((3,3)) # 3row,3 col矩陣 # np5 # np6=np.empty((2,3,3)) # 2 ge 3row,3 col矩陣 # np6 # np7=np.arange(15) #arrar 0--14 # np7 ## 數學運算 #x = np.array([[1,2,3],[4,5,6]],dtype=np.int32) #y = np.array([[1,1,1],[1,1,1]],dtype=np.int32) # z =x+y # z=np.add(x,y) #z =x-y # z=np.subtract(x,y) # z # z=x / y #np.divide(x,y) # z # z=x * y #np.multiply(x,y) # z # z=np.sqrt(x) # z # v=np.array([1,2]) # m=np.array([3,4]) # k= v.dot(m) #求向量內積np.dot(v,m) # k # v=np.array([1,2]) # m=np.array([3,4]) # k= v.dot(m) #矩陣的乘法 # k ##轉置和數學公式同樣,1維的vector轉置仍是本身 # x.T # arr = np.arange(16).reshape((2, 2, 4)) # [[[ 0 1 2 3] # [ 4 5 6 7]] # [[ 8 9 10 11] # [12 13 14 15]]] # print(arr.transpose((1,0,2))) # [[[ 0 1 2 3] # [ 8 9 10 11]] # [[ 4 5 6 7] # [12 13 14 15]]] # print(arr.swapaxes(1,2)) # [[[ 0 4] # [ 1 5] # [ 2 6] # [ 3 7]] # [[ 8 12] # [ 9 13] # [10 14] # [11 15]]] #x = np.array([[1,2],[3,4]]) #print(np.sum(x)) # 數組/矩陣中全部元素求和; prints "10" #print(np.sum(x, axis=0)) # 按行去求和; prints "[4 6]" #print(np.sum(x, axis=1)) # 按列去求和; prints "[3 7]" ## broadcasting 逐元素運算了 ##給x的每一行都逐元素加上一個向量,而後生成y ## 邏輯運算 # x_arr = np.array([1.1, 1.2, 1.3, 1.4, 1.5]) # y_arr = np.array([2.1, 2.2, 2.3, 2.4, 2.5]) # cond = np.array([True, False, True, True, False]) print(np.where(cond, x_arr, y_arr)) # is true get x col,is false get x col value ## 數組高級操做 ##numpy能夠很容易地把一維數組轉成二維數組,三維數組。 # arr = np.arange(8) # arr # print("(4,2):", arr.reshape((4,2))) # print("(2,2,2):", arr.reshape((2,2,2))) ## ar.ravel() #高維數組能夠用ravel來拉平一維數組 ##鏈接兩個二維數組 np.concatenate #np.concatenate([arr1, arr2], axis = 0)) # 按行鏈接 #np.concatenate([arr1, arr2], axis = 1)) # 按列鏈接 ##拆分數組 first, second, third = np.split(arr, [1,3], axis = 0) #按row 拆分 first, second, third = np.split(arr, [1,3], axis = 1) #按col 拆分 ## r_ 用於按行堆疊 至關於row append() np.r_[arr1, arr2] ## c_用於按列堆疊 至關於col append() np.c_[np.r_[arr1, arr2], arr] ## 按元素重複 arr = np.arange(3) print(arr.repeat(3)) print(arr.repeat([2,3,4])) [0 0 0 1 1 1 2 2 2] [0 0 1 1 1 2 2 2 2] ##指定axis來重複 print(arr.repeat(2, axis=0)) print(arr.repeat(2, axis=1)) ##一維數組的排序 # arr = np.random.randn(8) # arr.sort() # arr # array([-0.61817891, -0.06058585, -1.35160371, -2.18178411, 0.87576168, # -1.58531466, -0.69936331, -0.32779743]) # arr2 = np.random.random(8) # arr2 # array([ 0.12432438, 0.25883333, 0.1822138 , 0.53953672, 0.33821614, # 0.55960961, 0.6137947 , 0.93829222]) ## 文件輸入輸出 ##讀取csv文件做爲數組 #arr = np.loadtxt('array_ex.txt', delimiter=',') ##數組文件讀寫 #np.save('some_array', arr) #print(np.load('some_array.npy')) ## 多個數組能夠一塊兒壓縮存儲 #rr2 = np.arange(15).reshape(3,5) #np.savez('array_archive.npz', a=arr, b=arr2) #arch = np.load('array_archive.npz') #print(arch['a']) #print(arch['b']) ## random # a = np.random.rand(2,2) # print('a:',a) # b = np.random.random(10) # print('b:',b) # c= np.random.randn(10) # print('c:',c) # a: [[ 0.26212204 0.45755303] # [ 0.04386303 0.66983097]] # b: [ 0.42563425 0.95733217 0.72836539 0.23990547 0.10497632 0.16002414 # 0.70969603 0.62574911 0.68678163 0.24185936] # c: [-1.45631229 0.21994626 -0.69116183 -0.282174 0.7204622 0.71022805 # 0.71147763 0.30575337 1.4860439 -0.56394711] # d = np.random.rand(10,10) # e = d.max(axis=1) # f = e.sum(axis =1).reshape(10,1) ##更多的numpy細節和用法能夠查看一下官網numpy指南 #http://docs.scipy.org/doc/numpy/reference/
相關文章
相關標籤/搜索