NumPy 改變數(shù)組的形狀

2021-11-06 17:33 更新

數(shù)組的形狀由沿每個(gè)軸的元素?cái)?shù)量決定:

>>> a = np.floor(10 * rg.random((3, 4)))
>>> a
array([[3., 7., 3., 4.],
       [1., 4., 2., 2.],
       [7., 2., 4., 9.]])
>>> a.shape
(3, 4)

可以使用各種命令更改數(shù)組的形狀。注意以下三個(gè)命令都返回一個(gè)修改過(guò)的數(shù)組,但不改變?cè)瓟?shù)組:

>>> a.ravel()  # returns the array, flattened
array([3., 7., 3., 4., 1., 4., 2., 2., 7., 2., 4., 9.])
>>> a.reshape(6, 2)  # returns the array with a modified shape
array([[3., 7.],
       [3., 4.],
       [1., 4.],
       [2., 2.],
       [7., 2.],
       [4., 9.]])
>>> a.T  # returns the array, transposed
array([[3., 1., 7.],
       [7., 4., 2.],
       [3., 2., 4.],
       [4., 2., 9.]])
>>> a.T.shape
(4, 3)
>>> a.shape
(3, 4)

產(chǎn)生的數(shù)組中元素的順序ravel通常是“C風(fēng)格”,即最右邊的索引“變化最快”,所以在a[0,?0]后面的元素是a[0,?1].?如果數(shù)組被重新整形為其他形狀,則數(shù)組再次被視為“C風(fēng)格”。NumPy 通常創(chuàng)建按此順序存儲(chǔ)的數(shù)組,因此ravel通常不需要復(fù)制其參數(shù),但如果該數(shù)組是通過(guò)獲取另一個(gè)數(shù)組的切片或使用不尋常的選項(xiàng)創(chuàng)建的,則可能需要復(fù)制它。ravelreshape函數(shù)還可以使用可選參數(shù)指示函數(shù)和使用 FORTRAN 樣式數(shù)組,其中最左邊的索引變化最快。

reshape函數(shù)以修改后的形狀返回其參數(shù),而?ndarray.resize方法修改數(shù)組本身:

>>> a
array([[3., 7., 3., 4.],
       [1., 4., 2., 2.],
       [7., 2., 4., 9.]])
>>> a.resize((2, 6))
>>> a
array([[3., 7., 3., 4., 1., 4.],
       [2., 2., 7., 2., 4., 9.]])

如果-1在重塑操作中給出了一個(gè)維度,則會(huì)自動(dòng)計(jì)算其他維度:

>>> a.reshape(3, -1)
array([[3., 7., 3., 4.],
       [1., 4., 2., 2.],
       [7., 2., 4., 9.]])
以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)