2017-10-20 36 views
1

在numpy的的documents字符串在numpy.r_中的含義是什麼?

>>> np.r_['0,2,0', [1,2,3], [4,5,6]] 
array([[1], 
     [2], 
     [3], 
     [4], 
     [5], 
     [6]]) 

什麼第三個數字字符串 '0,2,0' 的意思嗎?

+1

你說「在文檔中」,然後無法鏈接它們。 –

+0

可能是最好的參考文檔(https://docs.scipy.org/doc/numpy/reference/generated/numpy.r_。HTML)並從閱讀中提出具體問題。 FWIW,這是令人困惑的,但第三個數字表明當強制自然n維到n + 1或更高維時,哪個應該是'摺疊'軸。 –

+0

是的,我認爲第三個參數(0)表示切片發生的尺寸。這是顯而易見的,如果你嘗試使用0,2,1,那麼o/p將是:array([[1,2,3],[4,5,6]]) – skrubber

回答

0

我還沒有用過r_多的字符串參數;對我來說,更容易直接使用concatanate及其變體。

但看該文檔:

具有三個逗號分隔的整數的字符串允許 軸的規格沿串聯,尺寸迫使 條目的最小數量,並且該軸應包含數組的開始,其中 小於指定的維數。

'0.2.0' 
axis = 0 
make it 2d 
start with 0d 

In [79]: np.r_['0,2,0', [1,2,3], [4,5,6]] 
Out[79]: 
array([[1], 
     [2], 
     [3], 
     [4], 
     [5], 
     [6]]) 

甲串聯等效

In [80]: np.concatenate(([1,2,3], [4,5,6])) 
Out[80]: array([1, 2, 3, 4, 5, 6]) 
In [81]: np.concatenate(([1,2,3], [4,5,6]))[:,None] 
Out[81]: 
array([[1], 
     [2], 
     [3], 
     [4], 
     [5], 
     [6]]) 

在這裏,我級聯上軸= 0,和膨脹後串連至2d。但它聽起來像r_首先擴展了元素的尺寸(但我們可以仔細檢查代碼)。

In [83]: alist = ([1,2,3], [4,5,6]) 
In [86]: [np.expand_dims(a,1) for a in alist] 
Out[86]: 
[array([[1], 
     [2], 
     [3]]), array([[4], 
     [5], 
     [6]])] 
In [87]: np.concatenate(_, axis=0) 
Out[87]: 
array([[1], 
     [2], 
     [3], 
     [4], 
     [5], 
     [6]]) 

我使用expand_dims使輸入2 d,以及第一後添加新的維度。做完,我可以連接上軸0

注意,輸入r_可能已經2D,如:如果1

np.r_['0,2,0',[1,2,3], [[4],[5],[6]]] 
np.r_['0,2,0',[1,2,3], np.expand_dims([4,5,6],1)] 
np.r_['0,2,0',[1,2,3], np.atleast_2d([4,5,6]).T] 

三維數字,轉動部件到

In [105]: np.atleast_2d([4,5,6]) 
Out[105]: array([[4, 5, 6]]) 

In [103]: np.r_['0,2,1',[1,2,3],[4,5,6]] 
Out[103]: 
array([[1, 2, 3], 
     [4, 5, 6]]) 

通常,如果文檔不清楚,我喜歡深入代碼或嘗試其他輸入。

In [107]: np.r_['1,2,1',[1,2,3], [4,5,6]] 
Out[107]: array([[1, 2, 3, 4, 5, 6]]) 
In [108]: np.r_['1,2,0',[1,2,3], [4,5,6]] 
Out[108]: 
array([[1, 4], 
     [2, 5], 
     [3, 6]]) 

看代碼,我看到它使用

array(newobj, copy=False, subok=True, ndmin=ndmin) 

的組件擴大到所需ndmin。 3d編號用於構建transpose參數。詳情凌亂,但效果是一樣的東西:

In [111]: np.array([1,2,3], ndmin=2) 
Out[111]: array([[1, 2, 3]]) 
In [112]: np.array([1,2,3], ndmin=2).transpose(1,0) 
Out[112]: 
array([[1], 
     [2], 
     [3]]) 
0

enter image description here

謝謝所有的答案!現在,我認爲我對這個問題有了更好的理解。所以,我繪製了思維導圖。如果我錯了,請糾正我。作爲Python的初學者,我正努力學習更多,思考更多。最後,我必須爲我可憐的英語道歉。

相關問題