亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

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

NumPy簡明教程(二、數組3)

2019-11-10 17:15:42
字體:
來源:轉載
供稿:網友

前兩篇文章對NumPy數組做了基本的介紹,本篇文章對NumPy數組進行較深入的探討。首先介紹自定義類型的數組,接著數組的組合,最后介紹數組復制方面的問題。

自定義結構數組

通過NumPy也可以定義像C語言那樣的結構類型。在NumPy中定義結構的方法如下:

定義結構類型名稱;定義字段名稱,標明字段數據類型。

[python] view plain copy student= dtype({'names':['name', 'age', 'weight'], 'formats':['S32', 'i','f']}, align = True)  

這里student是自定義結構類型的名稱,使用dtype函數創建,在第一個參數中,'names'和'formats'不能改變,names中列出的是結構中字段名稱,formats中列出的是對應字段的數據類型。S32表示32字節長度的字符串,i表示32位的整數,f表示32位長度的浮點數。最后一個參數為True時,表示要求進行內存對齊。

字段中使用NumPy的字符編碼來表示數據類型。更詳細的數據類型見下表。

數據類型字符編碼
整數i
無符號整數u
單精度浮點數f
雙精度浮點數d
布爾值b
復數D
字符串S
UnicodeU
VoidV
在定義好結構類型之后,就可以定義以該類型為元素的數組了:

[python] view plain copy a= array([(“Zhang”, 32, 65.5), (“Wang”, 24, 55.2)], dtype =student)  

除了在每個元素中依次列出對應字段的數據外,還需要在array函數中最后一個參數指定其所對應的數據類型。

注:例子來源于張若愚的Python科學計算藝術的29頁。更多關于dtype的內容請參考《NumPy for Beginner》一書的第二章。

組合函數

這里介紹以不同的方式組合函數。首先創建兩個數組:

[python] view plain copy >>> a = arange(9).reshape(3,3)  >>> a  array([[0, 1, 2],             [3, 4, 5],             [6, 7, 8]])  >>> b = 2 * a  >>> b  array([[ 0, 2, 4],         [ 6, 8, 10],         [12, 14, 16]])  

水平組合

[python] view plain copy >>> hstack((a, b))  array([[ 0, 1, 2, 0, 2, 4],         [ 3, 4, 5, 6, 8, 10],         [ 6, 7, 8, 12, 14, 16]])  也可通過concatenate函數并指定相應的軸來獲得這一效果:[python] view plain copy >>> concatenate((a, b), axis=1)  array([[ 0, 1, 2, 0, 2, 4],         [ 3, 4, 5, 6, 8, 10],         [ 6, 7, 8, 12, 14, 16]])  

垂直組合

[python] view plain copy >>> vstack((a, b))  array([[ 0, 1, 2],         [ 3, 4, 5],         [ 6, 7, 8],          [ 0, 2, 4],         [ 6, 8, 10],         [12, 14, 16]])  同樣,可通過concatenate函數,并指定相應的軸來獲得這一效果。[python] view plain copy >>> concatenate((a, b), axis=0)  array([[ 0, 1, 2],         [ 3, 4, 5],         [ 6, 7, 8],         [ 0, 2, 4],         [ 6, 8, 10],         [12, 14, 16]])  

深度組合

另外,還有深度方面的組合函數dstack。顧名思義,就是在數組的第三個軸(即深度)上組合。如下:

[python] view plain copy >>> dstack((a, b))  array([[[ 0, 0],          [ 1, 2],          [ 2, 4]],           [[ 3, 6],          [ 4, 8],          [ 5, 10]],           [[ 6, 12],          [ 7, 14],          [ 8, 16]]])  仔細觀察,發現對應的元素都組合成一個新的列表,該列表作為新的數組的元素。

行組合

行組合可將多個一維數組作為新數組的每一行進行組合:

[python] view plain copy >>> one = arange(2)  >>> one  array([0, 1])  >>> two = one + 2  >>> two  array([2, 3])  >>> row_stack((one, two))  array([[0, 1],         [2, 3]])  對于2維數組,其作用就像垂直組合一樣。

列組合

列組合的效果應該很清楚了。如下:

[python] view plain copy >>> column_stack((oned, twiceoned))  array([[0, 2],         [1, 3]])  對于2維數組,其作用就像水平組合一樣。

分割數組

在NumPy中,分割數組的函數有hsplit、vsplit、dsplit和split??蓪到M分割成相同大小的子數組,或指定原數組分割的位置。

水平分割

[python] view plain copy >>> a = arange(9).reshape(3,3)  >>> a  array([[0, 1, 2],         [3, 4, 5],         [6, 7, 8]])  >>> hsplit(a, 3)  [array([[0],         [3],         [6]]),   array([[1],         [4],         [7]]),   array([[2],         [5],         [8]])]  也調用split函數并指定軸為1來獲得這樣的效果:[python] view plain copy split(a, 3, axis=1)  

垂直分割

垂直分割是沿著垂直的軸切分數組:

[python] view plain copy >>> vsplit(a, 3)  >>> [array([[0, 1, 2]]), array([[3, 4, 5]]), array([[6, 7, 8]])]  同樣,也可通過solit函數并指定軸為1來獲得這樣的效果:[python] view plain copy >>> split(a, 3, axis=0)  

面向深度的分割

dsplit函數使用的是面向深度的分割方式:

[python] view plain copy >>> c = arange(27).reshape(3, 3, 3)  >>> c  array([[[ 0,  1,  2],          [ 3,  4,  5],          [ 6,  7,  8]],           [[ 9, 10, 11],          [12, 13, 14],          [15, 16, 17]],           [[18, 19, 20],          [21, 22, 23],          [24, 25, 26]]])  >>> dsplit(c, 3)  [array([[[ 0],          [ 3],          [ 6]],           [[ 9],          [12],          [15]],           [[18],          [21],          [24]]]),   array([[[ 1],          [ 4],          [ 7]],           [[10],          [13],          [16]],           [[19],          [22],          [25]]]),   array([[[ 2],          [ 5],          [ 8]],           [[11],          [14],          [17]],           [[20],          [23],          [26]]])]  

復制和鏡像(View)

   當運算和處理數組時,它們的數據有時被拷貝到新的數組有時不是。這通常是新手的困惑之源。這有三種情況:

完全不復制

   簡單的賦值,而不復制數組對象或它們的數據。

[python] view plain copy >>> a = arange(12)  >>> b = a      #不創建新對象  >>> b is a           # a和b是同一個數組對象的兩個名字  True  >>> b.shape = 3,4    #也改變了a的形狀  >>> a.shape  (3, 4)  

    Python 傳遞不定對象作為參考4,所以函數調用不拷貝數組。

[python] view plain copy >>> def f(x):  ...     PRint id(x)  ...  >>> id(a)       #id是一個對象的唯一標識  148293216  >>> f(a)  148293216  

視圖(view)和淺復制

   不同的數組對象分享同一個數據。視圖方法創造一個新的數組對象指向同一數據。

[python] view plain copy >>> c = a.view()  >>> c is a  False  >>> c.base is a      #c是a持有數據的鏡像  True  >>> c.flags.owndata  False  >>>  >>> c.shape = 2,6    # a的形狀沒變  >>> a.shape  (3, 4)  >>> c[0,4] = 1234        #a的數據改變了  >>> a  array([[   0,    1,    2,    3],         [1234,    5,    6,    7],         [   8,    9,   10,   11]])  切片數組返回它的一個視圖:[python] view plain copy >>> s = a[ : , 1:3]     # 獲得每一行1,2處的元素  >>> s[:] = 10           # s[:] 是s的鏡像。注意區別s=10 and s[:]=10  >>> a  array([[   0,   10,   10,    3],         [1234,   10,   10,    7],         [   8,   10,   10,   11]])  

深復制

   這個復制方法完全復制數組和它的數據。

[python] view plain copy >>> d = a.copy()       #創建了一個含有新數據的新數組對象  >>> d is a  False  >>> d.base is a        #d和a現在沒有任何關系  False  >>> d[0,0] = 9999  >>> a  array([[   0,   10,   10,    3],         [1234,   10,   10,    7],         [   8,   10,   10,   11]])  

參考文獻:

《Python科學計算》《Tentative NumPy Tutorial》《NumPy for Beginner》


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲国产婷婷香蕉久久久久久| 国产精品视频xxxx| 国产日韩欧美自拍| 久久中文字幕国产| 永久555www成人免费| 久久精品最新地址| 精品国产美女在线| 亚洲国产黄色片| 日韩美女在线看| 高清欧美性猛交xxxx黑人猛交| 欧美整片在线观看| 97视频在线播放| 成人妇女免费播放久久久| 久久激情五月丁香伊人| 欧美中文在线观看| 色综合伊人色综合网| 蜜臀久久99精品久久久无需会员| 亚洲欧美日韩图片| 日韩精品久久久久| 国语自产精品视频在线看| 91精品久久久久久久久| 国产精品美女久久久免费| 成人免费观看49www在线观看| 91高清视频免费| 国产在线不卡精品| 日韩va亚洲va欧洲va国产| 欧美精品www在线观看| 欧美成aaa人片在线观看蜜臀| 性亚洲最疯狂xxxx高清| 日韩av男人的天堂| 91久久久久久久久| 91在线高清视频| 91精品国产成人| 激情成人中文字幕| 亚洲欧美激情精品一区二区| 国内精品久久久久影院优| 韩剧1988在线观看免费完整版| 国产精品视频久久久| 久久久久久久久国产| 久久久久久久激情视频| 久久精品美女视频网站| 午夜精品免费视频| 97精品视频在线观看| 久久的精品视频| 亚洲一区二区三区四区在线播放| 久久久久久久国产精品| 国产精品久久久久久久久久久不卡| 尤物精品国产第一福利三区| 亚洲а∨天堂久久精品9966| 欧美日韩精品在线视频| 91午夜在线播放| 日韩在线观看成人| 91禁国产网站| 成人精品一区二区三区| 黑人与娇小精品av专区| 久久久午夜视频| 性色av一区二区咪爱| 欧美性猛交视频| 欧美性猛交丰臀xxxxx网站| 久久精品影视伊人网| 久色乳综合思思在线视频| 日韩av在线一区二区| 欧美日韩综合视频网址| 日韩中文视频免费在线观看| 亚洲福利在线看| 国产一区红桃视频| 亚洲成av人片在线观看香蕉| 亚洲视频专区在线| 国产精品自在线| www.美女亚洲精品| 日韩av理论片| 国产噜噜噜噜久久久久久久久| 亚洲人成亚洲人成在线观看| 日韩精品视频三区| 欧美大胆在线视频| 亚洲a中文字幕| 日韩电影中文字幕在线| 98精品在线视频| 精品亚洲永久免费精品| 精品福利免费观看| 91av在线免费观看| 亚洲国产精品中文| 国语自产精品视频在线看抢先版图片| 亚洲国产成人爱av在线播放| 久久久久久久久久久av| 91极品女神在线| 91日韩在线视频| 欧美最猛性xxxxx(亚洲精品)| 国产成人精品免高潮在线观看| 亚洲一区www| 久久久久日韩精品久久久男男| 国产在线拍偷自揄拍精品| 欧美性69xxxx肥| 91精品久久久久久久久久另类| 国产精品老牛影院在线观看| 亚洲毛片在线免费观看| 日韩av在线网| 尤物yw午夜国产精品视频明星| 热久久免费国产视频| 爱福利视频一区| 欧美日韩国内自拍| 欧美成人免费大片| 欧美三级欧美成人高清www| 国产精品成人va在线观看| 国产在线观看不卡| 国产精品盗摄久久久| 午夜精品一区二区三区在线播放| 久久久极品av| 亚洲精品短视频| 亚洲精品动漫久久久久| 国产成人一区二区三区小说| 国产精品入口日韩视频大尺度| 91久久精品一区| 91精品久久久久久久久久另类| 国产拍精品一二三| 美乳少妇欧美精品| 国产精品视频一区二区三区四| 亚洲xxx大片| 久久亚洲精品中文字幕冲田杏梨| 国产精品久久久久久av福利| 久久精品人人爽| 亚洲人成在线观看| 国产精品女人网站| 久久视频这里只有精品| 国产91精品视频在线观看| 亚洲国产欧美在线成人app| 国产精品久久国产精品99gif| 精品国产福利在线| 日本成人黄色片| 欧美在线免费视频| 亚洲美女福利视频网站| 国产亚洲精品美女久久久| 国产97人人超碰caoprom| 亚洲男人天堂九九视频| 亚洲中国色老太| 欧美激情第99页| 久久久久五月天| 色中色综合影院手机版在线观看| 欧美黑人性视频| 国产成人亚洲综合91精品| 亚洲人精品午夜在线观看| 久久精品99久久久香蕉| 国产精品黄页免费高清在线观看| 久久影视电视剧凤归四时歌| 成人欧美在线视频| 国产精品美乳在线观看| 国产精品高潮呻吟久久av野狼| 日韩www在线| 97香蕉超级碰碰久久免费软件| 国产久一一精品| 精品久久香蕉国产线看观看亚洲| 97在线视频免费观看| 亚洲free性xxxx护士hd| 亚洲午夜精品久久久久久久久久久久| 亚洲欧美日韩精品久久亚洲区| 久久成人在线视频| 亚洲精品久久久久中文字幕欢迎你| 成人久久18免费网站图片| 欧美大奶子在线| 欧美xxxwww| 97久久伊人激情网| 日本精品视频在线播放| 亚洲第一区中文99精品| 国产美女久久精品香蕉69|