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

2021-11-06 17:33 更新

數(shù)組的形狀由沿每個軸的元素數(shù)量決定:

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

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

  1. >>> a.ravel() # returns the array, flattened
  2. array([3., 7., 3., 4., 1., 4., 2., 2., 7., 2., 4., 9.])
  3. >>> a.reshape(6, 2) # returns the array with a modified shape
  4. array([[3., 7.],
  5. [3., 4.],
  6. [1., 4.],
  7. [2., 2.],
  8. [7., 2.],
  9. [4., 9.]])
  10. >>> a.T # returns the array, transposed
  11. array([[3., 1., 7.],
  12. [7., 4., 2.],
  13. [3., 2., 4.],
  14. [4., 2., 9.]])
  15. >>> a.T.shape
  16. (4, 3)
  17. >>> a.shape
  18. (3, 4)

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

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

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

如果-1在重塑操作中給出了一個維度,則會自動計算其他維度:

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

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號