国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

Numpy學習之路(1)——數組的創建

2019-11-14 16:58:47
字體:
來源:轉載
供稿:網友

數組是Numpy操作的主要對象,也是python數據分析的主要對象,本系列文章是本人在學習Numpy中的筆記。

文章中以下都基于以下方式的numpy導入:

import numpy as npfrom numpy import *

1、普通數組的創建——np.arange(), np.array(),

(1) arange()建立是順序數組,函數原型:arange([start,]stop[,step],dtype=None)

其中start參數如果省略,則表示從0開始,默認的dtype為float32

#創建從0-19的一維數組ar_1ar_1=np.arange(20)#output: ar_1=array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16,17, 18, 19])#創建11-20,step=2的一維數組ar_2ar_2=np.arange(11,21,2)#output:ar_2=array([11, 13, 15, 17, 19])

(2)array()的主要用于創建多維數組,原型為:array(object, dtype=None, copy=True, order=None, subok=False, ndmin=0)

  • object : 是一個array_like象,包括list,tuple等__array__定制類可以返回類數組的對象。
  • dtype:數據類型,默認為可以保存數據的最小類型,可以制定
  • 其他的參數可以通過help來查看,這里就只介紹最常用的
#創建一個2*3的數組,數據類型為int32ary_1=np.array([[2,2,3],[5,7,3]],dtype=int32)#output:ary_1=([[2, 2, 3],#                          [5, 7, 3]], dtype=int32)#創建一個2*3*3的數組,數據類型默認:ary_2=np.array([[[3,4,5],[3.3,4.2,4.2],[1.3,2.2,5.8]],[[2.3,1.9,5.7],[4.5,6.7,9.7],[2.2,1.2,7.99]]])#output:#array([[[ 3.  ,  4.  ,  5.  ],#        [ 3.3 ,  4.2 ,  4.2 ],#        [ 1.3 ,  2.2 ,  5.8 ]],##       [[ 2.3 ,  1.9 ,  5.7 ],#        [ 4.5 ,  6.7 ,  9.7 ],#        [ 2.2 ,  1.2 ,  7.99]]])ary_2.dtype#output:dtype('float64'),
#雖然由int和float, array是以可以保存這些數據的最小數據類型保存,所以是float32
#當然也可以通過reshape等方式改變數組的維度,從而獲得自己所需要的數組
ary_3=np.arange(20,30).reshape(2,5)
#output:ary_3
#array([[20, 21, 22, 23, 24],
#       [25, 26, 27, 28, 29]])

 2. 特殊數組的創建:

(1)空數組:empty(),empty_like()

  • empty(shape[,dtype=None,order=]), 創建一個形狀構成為shape的空數組,dtype為數據類型,order為順序形式:C(C語言)-row-major;F(Fortran)column-major。
  • empty_like(array), 依據給定數組(a)的形狀和類型返回一個新的空數組。
#創建一個3*3的空數組:e_1=np.empty([3,3])#In [89]: PRint e_1#[[  1.72723371e-077   2.68678134e+154   4.44659081e-323] #[  0.00000000e+000   0.00000000e+000   0.00000000e+000] #[  0.00000000e+000   0.00000000e+000   0.00000000e+000]]#填充的數值都是隨機的random#通過empty_like創建與e_1一樣形狀的空數組e_2=np.empty_like(e_1)#In [93]: print e_2#[[  1.72723371e-077   1.72723371e-077   2.00299617e-313] #[  1.72723371e-077   5.92878775e-323   3.18299369e-313] #[  0.00000000e+000   9.73471935e-309   0.00000000e+000]]

(2)其他特殊數組創建:eye, ones, zeros也有類似的結構,另外還有一個identity函數,用以創建方陣

  • eye[N,[, M, k, dtype]), N為行數,M為列數(如果不設置默認為N),對角線序列號: 0 對應主對角線;,整數對應upper diagonal,負數對應lower diagonal;
  • eye_like(array),創建形狀與array一樣形狀的對角線為1的數組
#創建3*3主對角線為1的方陣:ey_1=np.eye(3,3,k=0)print ey_1#[[ 1.  0.  0.]#[ 0.  1.  0.]#[ 0.  0.  1.]]#ey_2的對角線uper了一個位置(行)ey_2=np.eye(3,3,k=1)pringt ey_2#[[ 0.  1.  0.]#[ 0.  0.  1.]#[ 0.  0.  0.]]
  • ones(shape[,dtpe=,order]):按照給定的形狀返回一個形狀為shape的元素為1的數組
  • ones_like(a):返回一個形狀跟a一樣的元素為1的數組
one_1=np.ones([5,9])print one_1#In [99]: print one_1#[[ 1.  1.  1.  1.  1.  1.  1.  1.  1.]#[ 1.  1.  1.  1.  1.  1.  1.  1.  1.]#[ 1.  1.  1.  1.  1.  1.  1.  1.  1.]#[ 1.  1.  1.  1.  1.  1.  1.  1.  1.]#[ 1.  1.  1.  1.  1.  1.  1.  1.  1.]]
  • zeros(shape[,dtype,order]): 按照給定的形狀返回一個形狀為shape的元素為0的數組
  • zeros_like(a):返回一個形狀跟a一樣的元素為0的數組
zero_1=np.zeros([2,3])print zero_1#[[ 0.  0.  0.]#[ 0.  0.  0.]]
  • identity(n[,dtype=])返回一個n維的方陣
In [103]: idenOut[103]:array([[ 1.,  0.,  0.,  0.,  0.,  0.,  0.],       [ 0.,  1.,  0.,  0.,  0.,  0.,  0.],       [ 0.,  0.,  1.,  0.,  0.,  0.,  0.],       [ 0.,  0.,  0.,  1.,  0.,  0.,  0.],       [ 0.,  0.,  0.,  0.,  1.,  0.,  0.],       [ 0.,  0.,  0.,  0.,  0.,  1.,  0.],       [ 0.,  0.,  0.,  0.,  0.,  0.,  1.]])

3. 結構體數組

通常,一個數組保存的元素都是同源的,即數組內所有元素都需為同一個類型。在實際的數據分析過程中,尤其是二維spreadsheet式格式的數據,同一行的數據由不同的類型構成。這就需要為這種數據定義一個個性的dtype。dtype實際上是一個類,可以通過賦予參數定義特殊的結構體數組類型。(個人覺得有點類似于SAS中的informat)

#定義一個名稱為person的dtype,通過dtype#一個peson由name,age和weight構成person=np.dtype([('name',str,20),('age',int32),('weight',float32)])print person#[('name', 'S20'), ('age', '<i4'), ('weight', '<f4')]#就可以創建dtype為person的數組了student=array([('cnblog',10,12.2),('myBlog',40,30)],dtype=person)#由于類型規定了參數的個數,所以需要用tuple來創建數組的行數(因為其不可變),否則可能會有一個readable的exceptionprint student#[('cnblog', 10, 12.199999809265137) ('myBlog', 40, 30.0)]

4. 從文件創建(后續會有專門介紹)

 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 凌源市| 罗田县| 郯城县| 昭觉县| 永济市| 崇信县| 青州市| 新津县| 宣武区| 安溪县| 德清县| 海南省| 尼木县| 繁峙县| 辰溪县| 建德市| 明星| 易门县| 黄梅县| 河东区| 大足县| 公主岭市| 石景山区| 禹城市| 巴青县| 环江| 浦东新区| 柞水县| 常山县| 合山市| 翼城县| 芜湖市| 土默特左旗| 牙克石市| 昭觉县| 巴东县| 玉树县| 常山县| 龙山县| 长沙县| 龙山县|