Numpy筆記1--關於ravel與np.newaxis
阿新 • • 發佈:2018-12-26
關於我平時用的很多的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維等。我這裡只記錄我平時用到的。