ndarray中,當我們想獲取其指定行列的子矩形局域時,該如何獲取?一般的,我們容易誤認為通過傳入相應索引的陣列來直接獲取,但是結果出乎我們預期,這時我們得到的卻是相應陣列構成的座標對應於ndarray中的元素構成的一維陣列。如下所示。
上面例子中,我們想獲取arr物件中的右下角四個元素構成的矩形子區域,所以我們嘗試通過arr[[1,2],[1,2]]的方式獲取,結果返回的是(1,1),(2,2)座標對應的元素,並不是我們想要的矩形區域。實際上,對於numpy的ndarray,當我們對行和列都用陣列索引時(這種方式成為fancy索引),其返回的並不是相應的行列構成的子區域,而是傳入陣列構成的座標對應的元素。如果我們想要獲取相應的矩形區域,則可以通過下列方式。即先獲取相應的行,再通過切片索引和陣列索引獲取。
實際上,在ndarray中,只要行和列其中有一方不是陣列索引,或者說只要有一方是切片索引,那麼獲取到的就是相應的子矩形區域,如下所示。
最後要說明一下的是,雖然pandas是基於numpy的,但是對於dataframe的索引,即使行列都是陣列索引,返回的是相應矩形區域的dataframe,這點和ndarray並不一樣。
numpy多維陣列
ndarray是一種多維陣列物件 data 1,2,3 4,5,6 arr np.array data,dtype np.int32 print arr print shape arr.shape print arr.ndim 1 2 3 4 5 6 shape 2,3 2np.arange 2,1...
Numpy多維陣列
如果兩個矩陣的大小相同,我們可以使用算術運算子來進行兩個矩陣的計算。numpy將對兩個矩陣的對應位置進行操作處理。當兩個矩陣的大小不同,只有當其中乙個矩陣的維度為1時 例如矩陣只有一列或一行 我們才能在不同大小的矩陣上進行這些算術運算,在這種情況下,numpy將其廣播規則用於該操作 numpy為每個...
Numpy 多維陣列(上)
載入包 from numpy import 有多種方式 使用 python 列表或元祖,使用 arange,linspace 等函式,從檔案中讀取資料。v array 1,2,3,4 m array 1,2 3,4 type v 型別檢視,結果為numpy 模組提供的 ndarray 型別 v.sh...