1. 程式人生 > 程式設計 >詳解numpy.ndarray.reshape()函式的引數問題

詳解numpy.ndarray.reshape()函式的引數問題

我們知道numpy.ndarray.reshape()是用來改變numpy陣列的形狀的,但是它的引數會有一些特殊的用法,這裡我們進一步說明一下。程式碼如下:

import numpy as np

class Debug:
  def __init__(self):
    self.array1 = np.ones(6)

  def mainProgram(self):
    print("The value of array1 is: ")
    print(self.array1)
    print("The array2 is: ")
    array2 = self.array1.reshape(2,3)
    print(array2)

if __name__ == '__main__':
  main = Debug()
  main.mainProgram()
"""
The value of array1 is: 
[1. 1. 1. 1. 1. 1.]
The array2 is: 
[[1. 1. 1.]
 [1. 1. 1.]]
"""

這裡我們看到我們將一個長度為6的一維陣列變成了一個尺寸為(2,3)的二維陣列,這裡的2代表2行,對應y軸,3代表3列,對應x軸。

然而有時候我們會在reshape中使用到-1這個引數,當使用這個引數時,會將陣列重新塑形變得十分簡單。程式碼如下:

class Debug:
  def __init__(self):
    self.array1 = np.ones(6)

  def mainProgram(self):
    print("The value of array1 is: ")
    print(self.array1)
    print("The array2 is: ")
    array2 = self.array1.reshape(-1,3)
    print(array2)


if __name__ == '__main__':
  main = Debug()
  main.mainProgram()
"""
The value of array1 is: 
[1. 1. 1. 1. 1. 1.]
The array2 is: 
[[1. 1. 1.]
 [1. 1. 1.]]
"""

我們可以看到當我們將reshape的第一個引數變為-1時,我們仍舊獲得了一個尺寸為(2,3)的陣列,其實在這裡,-1代表的意思為6 / 3 =2,其中6是被塑形一維陣列的長度,3是我們指定的二維陣列一個方向的維度。這樣的好處就是當資料量比較大時,我們在二維陣列重新塑形時只需要指定一個維度上的尺寸,另一個維度上的尺寸python會自動為我們計算。

到此這篇關於詳解numpy.ndarray.reshape()函式的引數問題的文章就介紹到這了,更多相關numpy.ndarray.reshape()函式引數內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!