1. 程式人生 > >Numpy筆記1--關於ravel與np.newaxis

Numpy筆記1--關於ravel與np.newaxis

關於我平時用的很多的numpy中的ravel函式與[:,np.newaxis]或者寫成[:,None]。我覺得而這用的很多,特別是在算迴歸誤差時候。預測值真實值維度可能會不一樣。

1.ravel

關鍵:ravel是變為一位陣列(好記一列變一行
[:,np.newaxis]是增加一個維度(好記就是一行變一列

# !/usr/bin/python3
# -*-coding:UTF-8-*-
# By WILL
import numpy as np
#或者寫成a = np.random.rand(2,3),注意不是((2,3))
a = np.random.rand(6).reshape(
2,3)#注意不是((2,3)) print(a) b =a.ravel()#ravel後面有括號,shape沒有! print(b.shape)#shape沒有括號 print(b)

輸出:

[[0.64910292 0.48074633 0.08750035]
 [0.91594908 0.59519484 0.57150143]]
(6,)
[0.64910292 0.48074633 0.08750035 0.91594908 0.59519484 0.57150143]

2.[:,np.newaxis]或者[:,None]
(好記就是一行變一列,我用的最多就是這種情況)
程式碼:

# !/usr/bin/python3
# -*-coding:UTF-8-*-
# By WILL import numpy as np a = np.random.rand(6)#生成6個在[0,1)之間的均勻分佈的隨機數,就是每個數被取到的概率相等 print(a.shape) b = a[:,np.newaxis] c = a[:,None]#b,c其實是一樣的 print(b) print(b.shape) print(c) print(c.shape) print(b==c)#輸出的是一個bool矩陣

輸出

(6,)#這個其實就是(1,6)。但是我們不這樣寫,(6,)就代表含有6個元素的一維陣列
[[0.99765161]
 [0.62854737]
 [
0.17159908] [0.14533523] [0.73941744] [0.41561928]] (6, 1) [[0.99765161] [0.62854737] [0.17159908] [0.14533523] [0.73941744] [0.41561928]] (6, 1) [[ True] [ True] [ True] [ True] [ True] [ True]] Process finished with exit code 0

當然np.newaxis功能很強大的,例如把2維變3維等。我這裡只記錄我平時用到的。