Re: [問題] numpy.r_ 的使用方法 ?

看板Python作者 (小龍)時間7年前 (2017/03/22 15:50), 7年前編輯推噓1(100)
留言1則, 1人參與, 最新討論串2/2 (看更多)
※ 引述《will12345610 (Mr.Positive)》之銘言: : 小弟目前是numpy 新手,使用 numpy.r_ 看document 時看不太懂 : A string with three comma-separated integers 的使用方式。 : '0,2,0' : 依據 two comma-seperated integers 的推法,我只知道沿著axis 0 : 就是 row 往下長,輸出至少要2個dimension。 但是第三個數值0,我一直無法參透 : (6, 1) : 以下是其他嘗試,我還是不太懂他的含意 : (2, 3) : (3, 2) : (1, 6) : 希望版上的numpy 大神們教教小弟 !! 1.If the index expression contains comma separated arrays, then stack them along their first axis. 2.If the index expression contains slice notation or scalars then create a 1-D array with a range indicated by the slice notation. 在np.r_兩種用法中的第一種裡面 np.r_['X,Y(,Z)',array,array] np.r_ two comma-seperated integers 參數為兩個整數的話,第一個數值為從第X軸連結 第二個代表新的這個陣列要大於等於Y維 Z預設為-1 三個整數的時候,前兩個和上面一樣,第三個代表你想要連接的陣列的數值 在新的陣列會分別在第Z+1維上面並列 看懂這三個參數然後能夠在心理畫出新的陣列 我會從Y、Z、X的順序去看 注意X跟Z通常都會小於等於Y-1 上面的說明自己也覺得不完整和不好懂 要理解第三個參數我們先用以下的式子理解 np.r_['0,2,0',[1,2]] 先不管串接其他陣列,所以只有一個陣列 這段程式碼只會將原本[1,2]增加為2維 然後把原有陣列裡面的數值都放到第1維上面 跑處來的結果如下 [[1] [2]] 1會在np.r_['0,2,0',[1,2]][0,0] 2會在np.r_['0,2,0',[1,2]][1,0] np.r_['0,2,0',[1,2]].shape 就會是(2,1) 原本陣列的兩個數都會在第1維上面 如果第三個參數改成1 np.r_['0,2,1',[1,2]] 就會變成 [[1,2]]兩個數都在第二維並列 接著來看完整的例子如何連接兩個陣列 np.r_['0,3,0'],[1,2,3],[4,5,6]] 上面代表新的陣列有三個維度(Y=3),每個數值在第一維並列(Z=0), [4,5,6]這個陣列順著第一維串接(X=0) 先畫出三維的陣列: [[[1,2,3]]] 但是數值要在第一維並列 所以是: [[[1]] [[2]] [[3]]] 每一個都在第一維並列以後,從第一維(最外面括號裡面)接下去: [[[1]] [[2]] [[3]] [[4]] [[5]] [[6]]] 這樣要知道 .shape 會是多少一看就知道了:(6,1,1) 再一個例子 np.r_['2,3,1'],[1,2,3],[4,5,6]] 數值在三維中第二維(第二個括號裡面)並列: [[[1] [2] [3]]] 最後在第三維(最裡面的刮號)裡面串接: [[[1,4] [2,5] [3,6]]] 第一個維度有1個值,第二個有3個(陣列在第二維並列),第三個維度則各有兩個(兩個陣列在第三維串接) 所以np.r_['0,3,0'],[1,2,3],[4,5,6]],shape 就是(1,3,2) 希望理解的沒有錯誤,請大家多指教,謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 59.125.177.128 ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1490169034.A.2D4.html ※ 編輯: cgyu (59.125.177.128), 03/22/2017 15:56:43 ※ 編輯: cgyu (202.39.41.132), 03/22/2017 16:18:32

03/25 09:46, , 1F
感謝 cgyu 大神,你的範例終於讓我掌握原則了!!
03/25 09:46, 1F
文章代碼(AID): #1OqYpABK (Python)
文章代碼(AID): #1OqYpABK (Python)