我們知道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
會自動為我們計算。
如果大家覺得有用,請高擡貴手給一個贊讓我上推薦讓更多的人看到吧~