Re: [問題] numpy.r_ 的使用方法 ?
※ 引述《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
03/25 09:46, 1F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):