NumPy基礎練習(練一遍搞定NumPy)
阿新 • • 發佈:2019-01-27
import numpy as np import pandas as pd from numpy import random from numpy.random import randn #######生成矩陣################ # #將列表放入Numpy陣列 # data=[2,3,4,5] # arr=np.array(data) # print(arr) # #建立二維矩陣 # data=[[1,2,3],[7,8,9]] # arr=np.array(data) # print(arr) # #輸出arr的資料型別 # data=[2,3,4,5] # arr=np.array(data) # print(arr.dtype) #列印輸出8*4的二維矩陣 # a=np.empty([8,4]) # print(a) # #輸出2*3*2的三維矩陣 # arr=np.empty([2,3,2]) # print(arr) # #輸出2*4的矩陣 # a=np.empty([2,4]) # for i in range(2): # a[i]=i # print(a) # #輸出兩個2*4的矩陣 # a=np.empty([2,4]) # for i in range(2): # a[i]=i # print(a) # #二維矩陣 # a=[[2,1,4,6]] # print(a) # #輸出2*2的矩陣,指定資料型別 # arr=np.array([2,2],dtype='int32') # print(arr) # #表示在【0-31】這32個數字中分成8行4列 # arr=np.arange(32).reshape((8,4)) # print(arr) # #輸出 0-9 # print(np.arange(10)) # #在1和2之間(包括1和2)分成等值的3份輸出,結果:[ 1. 1.5 2. ] # print(np.linspace(1,2,3)) # #輸出行列都為9的單位矩陣 # print(np.eye(9)) # #輸出全為0的一維矩陣 # print(np.zeros([3])) # #輸出均為0的4維矩陣,引數分別為維度,即第一,二,三,四維 # print(np.zeros([2,2,2,2])) # #分別輸出1.0,1.5,2.0 # for x in np.linspace(1,2,3): # print(x) # #輸出2*4的二維矩陣 # print(np.random.rand(2,4)) ##2*2的矩陣 # a=np.random.rand(4).reshape(2,2) # print(a) # #輸出1-10之間隨機的4個整數 # print(np.random.randint(1,10,4)) # ################索引和切片########## # #輸出1,2 # arr=np.arange(10) # print(arr[1:3]) # #將第5個到第7個改為12 # arr=np.arange(10) # arr[5:8]=12 # print(arr) # #將第5個數之後全都改成10 # arr=np.arange(10) # arr[5:]=10 # print(arr) # #將arr切分成二維矩陣看,將arr[6]改成1514 # arr=np.arange(10) # a=arr[5:8] # a[1]=1514 # print(arr) # #想一下這個是什麼意思呢 # arr=np.arange(10) # a=arr[5:8] # a[:]=1514 # print(arr) #copy和'='的區別 # arr=np.arange(10) # print("arr:",arr) # b=arr.copy() # print("b.copy:",b) # b[2]=100 # print("after change:",b) # print("arr:",arr) # arr=np.arange(10) # print("arr:",arr) # c=arr # print("copy",c) # c[2]=100 # print("after copy",c) # print("arr:",arr) #copy是複製一份,而'='是檢視 #[,]和[][]是相同的 # arr=np.array([[1,2,3],[4,5,6]]) # print(arr[1,1]) # print(arr[1][1]) #axis 0 1 #0表示從行看,1表示從列看 #二維切片索引 # #輸出第1行 # arr=np.arange(1,10).reshape(3,3) # print(arr[:1]) # #輸出2,3行 # arr=np.arange(1,10).reshape(3,3) # print(arr[1:]) # #輸出第一行第一個 # arr=np.arange(1,10).reshape(3,3) # print(arr[:1,:1]) # #輸出所有行和2,3列 # arr=np.arange(1,10).reshape(3,3) # print(arr[:,1:]) #規律:[:]指全部二維矩陣 [:2]指[0,2)的行 # print(np.zeros([3,3])) # print(np.zeros([10]).max()) # print(np.empty([2,3,2],dtype='int32').max()) # print(np.arange(9).reshape(3,3)[:2,1:]) # a=np.arange(12).reshape([3,4]) # a=np.reshape(a,[4,3]) # print(a) #############轉置############ #轉置,相乘 # t=np.arange(9).reshape([3,3]).T # t1=np.arange(1,10,1).reshape([3,3]) # print(t.dot(t1)) #乘 # lst1=np.array([1,2,3,4]) # lst2=np.array([10,20,30,40]) # print(lst1.reshape([2,2])) # print(np.dot(lst1,lst2)) #這兩個有什麼區別? # b=np.random.random([1*2])#[ 0.6778996 0.29006868] # print(b) # b=np.random.random([1]*2)#[[ 0.09265586]] # print(b) ##reshape中的引數是維度 # ar=np.arange(16).reshape([2,2,4]) # print(ar) # c=np.arange(16).reshape([2,2,4]) #三維矩陣轉置 # c=np.arange(16).reshape([2,2,4]) # d=np.transpose(c,[1,0,2]) # e=c.T # print(d) # print(e) # #矩陣橫向合併 # a1 = np.array([[1,2],[3,4]]) # a2 = np.array([[5,6],[7,8]]) # print(np.hstack([a1,a2])) # #矩陣縱向合併 # a1 = np.array([[1,2],[3,4]]) # a2 = np.array([[5,6],[7,8]]) # print(np.vstack([a1,a2])) ############函式########### # #取指數函式 # print(np.exp([3,1])) # #接受兩個一維陣列,產生兩個二維矩陣 # points=np.arange(-5,5,1) # xs,ys=np.meshgrid(points,points) # print(xs) # print(ys) # ##where過濾條件 # #將正態分佈a中元素大於0的改成1,小於0的改成-1 # a=randn(9).reshape([3,3]) # print(a) # print(np.where(a>0,1,-1)) #檔案儲存 # arr=np.arange(10) # np.save('abc',arr) # print(np.load('abc.npy')) # a=np.arange(1,10).reshape([3,3]) #轉置和逆 # a=np.arange(10) # b=a.T # b=np.invert(a)#矩陣的逆 # #行相加,第二個等於第一個加第二個,依次類推 # a=np.array([[1,2,3],[4,5,6],[7,8,9]]) # print(a.cumsum(0)) # #列相加,第二個等於第一個加第二個,依次類推 # a=np.array([[1,2,3],[4,5,6],[7,8,9]]) # print(a.cumsum(0)) # #行累積 # a=np.array([[1,2,3],[4,5,6],[7,8,9]]) # print(a.cumprod(0)) # #列累積 # a=np.array([[1,2,3],[4,5,6],[7,8,9]]) # print(a.cumprod(1)) ##按行排序,從左到右依次增大 # arr=randn(5,3) # arr.sort(1) # print(arr) #隨機漫步 # nsteps=1000 # draws=np.random.randint(0,2,size=nsteps) # steps=np.where(draws>0,1,-1) # walk=steps.cumsum() # print(walk) #-----------------------------------------------------------
下面是一些函式: