NumPy筆記,

來源:互聯網
上載者:User

NumPy筆記,

  最近在看《利用Python進行資料分析》這本書,也會在網上查看一些資料,所以會對某些感覺比較重要的部分進行總結,一方面加深自己對一些方法的記憶,一方面方便自己以後的大總結。

  基本概念:

  Numpy(Numerical Python)是高效能科學計算和資料分析的基礎包
  NumPy的ndarray:多維陣列對象,快速靈活的大資料集容器
  所有元素必須是同類型

  可以查看官方文檔https://docs.scipy.org/doc/numpy/reference/routines.html,也可以到http://download.csdn.net/download/nsguf/9944297進行下載。

  以下源碼下載:https://github.com/NSGUF/PythonLeaning

 常用屬性:

print(np.version.version)#numpy的版本data1=[1,2,3,4]arr1=np.array(data1)print(arr1)data2=[[1,2,3,4],[5,6,7,8]]arr2=np.array(data2)print(arr2)print("------------屬性---------------")print(arr2.ndim)#數組的維數print(arr2.shape)#數組的維度print(arr2.size)#數組的元素總個數print(arr2.dtype)#數組中元素的類型print(arr2.itemsize)#數組中每個元素的位元組大小print(arr2.data)#實際數組元素的緩衝區#NumPy內建了很多資料類型比如int16,int32等,取值時可用np.int16#NumPy的轉換方式為print(np.int32(12.123))

  建立數組的方法:

print("------------建立數組的方法--------------")print(np.ones((2,3,4),dtype=np.int16))#全為1的多維陣列print(np.empty((2,3)))#為空白的多位元組,只分配記憶體,不初始化,所以運行速度快print(np.full(4,np.pi))#初始化為指定值print(np.random.random((2,3)))#產生shape為2,3的隨機數組print(np.arange(10,30,5))#以10開始差值為5的等差數列,不包含30print(np.linspace(10,30,4))#第一個數為10,最後一個數為30,取5個等差數 print(np.logspace(0,2,5))#等比數列,從10^0到10^2中5個數print(np.arange(4))#相當下面的式子print(np.arange(0,4,1))print(np.arange(12).reshape(4,3))#更換成shape為4,3a=np.arange(24).reshape(2,3,4)#print(a.resize(24))#resize作用與reshape相同,但是調用resize將會改變自身,reshape不會b=np.arange(4)print(a)#shape為2,3,4,ps:總個數必須為shape的乘積,否則報錯print(a[1,...])#等同於a[1]print(a[1])#第2個整列print(a[0,1])#取第一整列的第三列print(a[1,1,1])#第2大列的第2行的第2列,一個元素

  對數組進行操作和運算:

print("------------對數組進行操作--------------")c=a-b#加減乘除都可,將元素分別對應加減乘除,shape必須對應,除的話注意除數為0的情況print(c)print(a**2)#會對數組每個元素進行處理,也可進行一下方法遍曆print(a.sum())#總和print(a.min())#最小的數print(a.max())#最大的數print(a.cumsum())#擷取每個數的前n的和,比如前1個位0,前2個位0+1,前3個位0+1+2以此類推d=np.arange(12).reshape(3,4)print(d.sum(axis=-2))#總和print(d.min(axis=0))#最小的數print(d.max(axis=-1))#最大的數print(d.mean())#算術平均數print(d.std())#標準差print(d.var())#方差print(d.argmin())#最小索引print(d.argmax())#最大索引print(d.repeat(5))#重複print(np.power(b,3))#b的3次方print(np.repeat(3, 4))#建立一個一維數組,元素為3,重複4次print(d.cumsum(axis=1))#擷取每個數的前n的和,比如前1個位0,前2個位0+1,前3個位0+1+2以此類推print(d.cumprod())#所有元素的累積積#總結:當沒有axis參數的時候,預設為全部元素,當值為0或-2時,表示每個列中的第一個數,當值為1或-1時,表示以列做運算,其他值則報錯s=np.array([4,3,1,45,2,1,23])s.sort()#排序print(np.unique(s))#找出唯一值並排序

  布爾值數組方法:

print("------------布爾值數組方法--------------")bools=np.array([False,False,True,False])print(bools.any())#是否存在一個或多個Trueprint(bools.all())#全是Trueprint(a.ravel())#將shape值設為(元素總個數),相當於a.reshape(a.size)print(a.ravel().shape)print(np.sin(a))print(np.floor(a))#向上取整c=a.copy()#深拷貝print(c is a)print(a)

  對數組進行遍曆的方式:

print("------------對數組進行遍曆--------------")for row in a:#遍曆行    print(row)for element in a.flat:#遍曆每個元素    print(element)

  數組檔案的輸入輸出:

print("------------數組檔案輸入輸出--------------")np.save("save_a.npy",a)#將數組以.npy副檔名存入磁碟np.load("save_a.npy")np.savez('array_a_b.npz',a=a,b=b)#將a和b一起儲存arch=np.load('array_a_b.npz')print(arch['b'])#擷取b數組np.savetxt("text_b.txt",b,delimiter=',')#寫入txt檔案,以,為分隔字元arr=np.loadtxt("text_a.txt",delimiter=',')#讀取txt檔案,以,為分隔字元print(arr)

  對線性代數的一些方法,對矩陣的操作:

print("----------------------線性代數-------------------------")print(np.dot(a,b))#矩陣相乘print(a.transpose())#轉置print(np.rot90(a,3))#逆時針選擇90度,第二個參數是旋轉次數print(np.fliplr(a))#縱軸左右翻轉print(np.flipud(a))#縱軸上下翻轉print(np.roll(a,1,axis=1))#滾動位移print(np.trace(a))#跡,對角線的和e=np.array([[1,2,3],[1,2,3],[1,2,3]])print(np.diag(e))#以一維數組的形式返回方陣的對角線元素print(np.vstack((np.array([[1,1],[1,1]]),np.array([[1,0],[0,1]]))))#合并print(np.hstack((np.array([[1,1],[1,1]]),np.array([[1,0],[0,1]]))))#合并後翻轉

  隨機數的產生:

print("----------------------隨機數產生-------------------------")print(np.random.normal(size=(4,4)))#常態分佈隨機數,產生4*4的數組,和python內建的random相比,np.random快了很多print(np.random.binomial(10,0.5,100))#n=10,p=0.5的二項分布print(np.random.shuffle(b))#對序列隨機排序print(np.random.permutation(a))#對a進行亂序並返回一個新的arrayprint(np.random.rand(3,2))#均勻分布的樣本值print(np.random.randint(5,size=(4,3)))#第一個屬性為上限表示0-5,print(np.random.randn())#常態分佈(平均值為0,標準差為1)的樣本值print(np.random.beta(10,10,size=10))#beta分布

  

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.