reshape用法 - python plt軸




-1是什麼意思在numpy重塑? (4)

numpy.reshape(a,newshape,order {})查看下面的鏈接了解更多信息。 https://docs.scipy.org/doc/numpy/reference/generated/numpy.reshape.html

對於你提到的下面的例子,輸出解釋了合成矢量為單行。( - 1)表示行數為1.如果

a = numpy.matrix([[1, 2, 3, 4], [5, 6, 7, 8]])
b = numpy.reshape(a, -1)

輸出:

矩陣([[1,2,3,4,5,6,7,8]])

這可以用另一個例子更精確地解釋:

b = np.arange(10).reshape((-1,1))

輸出:(是一維柱狀數組)

陣列([[0],

   [1],
   [2],
   [3],
   [4],
   [5],
   [6],
   [7],
   [8],
   [9]])

b = np.arange(10).reshape((1,-1))

輸出:(是一維行數組)

數組([[0,1,2,3,4,5,6,7,8,9]])

使用帶參數-1的重塑函數可以將一個numpy矩陣重構成一個向量。 但我不知道這裡的-1是什麼意思。

例如:

a = numpy.matrix([[1, 2, 3, 4], [5, 6, 7, 8]])
b = numpy.reshape(a, -1)

b的結果是: matrix([[1, 2, 3, 4, 5, 6, 7, 8]])

有人知道-1是什麼意思嗎? 它似乎python分配-1幾個含義,如: array[-1]意味著最後一個元素。 你能解釋一下嗎?


根據the documentation

newshape:int或int的元組

新形狀應與原始形狀兼容。 如果是整數,那麼結果將是該長度的一維數組。 一個形狀尺寸可以是-1。 在這種情況下,該值是從數組長度和剩余維度推斷出來的。


用於重新整形數組。

假設我們有一個尺寸為2 x 10 x 10的三維數組:

r = numpy.random.rand(2, 10, 10) 

現在我們想要重塑為5 X 5 x 8:

numpy.reshape(r, shape=(5, 5, 8)) 

將完成這項工作。

請注意,一旦修復了第一個dim = 5和第二個dim = 5,則不需要確定第三個維度。 為了幫助你的懶惰,python提供了-1的選項:

numpy.reshape(r, shape=(5, 5, -1)) 

會給你一個shape =(5,5,8)的數組。

同樣,

numpy.reshape(r, shape=(50, -1)) 

會給你一個shape =(50,4)的數組,

你可以在http://anie.me/numpy-reshape-transpose-theano-dimshuffle/閱讀更多內容。


這很容易理解。 “-1”代表“未知尺寸”,可以從另一個維度引用。 在這種情況下,如果你像這樣設置你的矩陣:

a = numpy.matrix([[1, 2, 3, 4], [5, 6, 7, 8]])

像這樣修改你的矩陣:

b = numpy.reshape(a, -1)

它會調用矩陣a的一些deafult操作,這將返回一個一維numpy陣列/ martrix。

但是,我認為使用這樣的代碼不是一個好主意。 為什麼不嘗試:

b = a.reshape(1,-1)

它會給你相同的結果,讀者更清楚地理解:將b設置為另一個形狀。 對於a,我們不應該有多少列(將其設置為-1!),但我們需要一個1維數組(將第一個參數設置為1!)。







numpy