NumPy(Numerical Python的縮寫)是一個開源的Python科學計算庫。使用NumPy,就可以很自然地使用數(shù)組和矩陣。NumPy包含很多實用的數(shù)學函數(shù),涵蓋線性代數(shù)運算、傅里葉變換和隨機數(shù)生成等功能。本文主要介紹Python NumPy Array(數(shù)組) reshape
reshape意味著更改數(shù)組的形狀。
數(shù)組的形狀是每個維度中的元素數(shù)量。
通過重塑(reshape),我們可以添加或刪除維度或更改每個維度中的元素數(shù)量。
例如:
將以下具有12個元素的1-D數(shù)組轉換為2-D數(shù)組。 最外面的維度將具有4個數(shù)組,每個數(shù)組包含3個元素:
import numpy as np arr = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]) newarr = arr.reshape(4, 3) print(newarr)
例如:
將以下具有12個元素的1-D數(shù)組轉換為3-D數(shù)組。 最外面的維度將具有2個數(shù)組,其中包含3個數(shù)組,每個數(shù)組包含2個元素:
import numpy as np arr = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]) newarr = arr.reshape(2, 3, 2) print(newarr)
只要reshape所需的元素在兩種形狀中均相等。
可以將8個元素的一維數(shù)組reshape為4個元素的2行二維數(shù)組,但不能將其reshape為3個元素的3行二維數(shù)組,因為這需要3x3 = 9個元素。
例如:
嘗試將具有8個元素的1D數(shù)組轉換為每個維度中具有3個元素的2D數(shù)組(將產(chǎn)生錯誤):
import numpy as np arr = np.array([1, 2, 3, 4, 5, 6, 7, 8]) newarr = arr.reshape(3, 3) print(newarr)
例如:
判斷返回的數(shù)組是copy還是view:
import numpy as np arr = np.array([1, 2, 3, 4, 5, 6, 7, 8]) print(arr.reshape(2, 4).base)
上面的示例返回原始數(shù)組,因此它是一個view。
可以使用一個"unknown"維度。
這意味著您不必在整形方法中為尺寸之一指定確切的數(shù)字。
傳遞-1
作為值,NumPy將為您計算該數(shù)字。
例如:
將8個元素的1D數(shù)組轉換為2x2元素的3D數(shù)組:
import numpy as np arr = np.array([1, 2, 3, 4, 5, 6, 7, 8]) newarr = arr.reshape(2, 2, -1) print(newarr)
注意:我們不能將-1
傳遞給多個維度。
展平數(shù)組是指將多維數(shù)組轉換為一維數(shù)組。
可以使用reshape(-1)
來做到這一點。
例如:
將數(shù)組轉換為一維數(shù)組:
import numpy as np arr = np.array([[1, 2, 3], [4, 5, 6]]) newarr = arr.reshape(-1) print(newarr)
注意:有很多功能可以更改numpy中的數(shù)組形狀(shape)。flatten
,ravel
以及重新排列元素rot90
,flip
,fliplr
,flipud
等。這些屬于numpy的“中級至高級”部分。
聯(lián)系客服