[問題] 請問python numpy的矩陣格式

作者: Bondrewd (The Novel)   2018-04-07 14:58:40
我以前用過matlab 現在在學python
想請問 numpy中的array
shape是(n,1) 跟 (n,) 要怎麼分辨?
要怎麼知道np.dot出來的會是(n,1) 還是 (n,)?
我知道要把(n,1)轉成 (n,)要用 np.squeeze
可是計算時兩者不能一起計算 系統會報錯dimension不合
我想要知道python裡面是怎麼決定np.dot出來會是(n,1)還是(n,)?
我知道我這問題可能很菜
看到stackoverflow上面也有人問過
stackoverflow.com/questions/17869840/numpy-vector-n-1-dimension-n-dimension
-conversion
可是我知道怎麼轉換 (np.squeeze)
問題是我想要知道np.dot怎麼決定出來是(n,1)還是(n,) 這個決定的規則?
謝謝大家
作者: iphone2003 (307)   2018-04-07 15:34:00
(n,)是個向量,(n,1)是個n*1的矩陣或是說是column vector
作者: Bondrewd (The Novel)   2018-04-07 17:14:00
恩對 所以要怎麼知道np.dot運算的output會寫成向量還是矩陣?如果input是矩陣 output就會是矩陣 應該是這樣吧?
作者: vfgce (小兵)   2018-04-07 18:54:00
ndarray.ndim可以看出維度....
作者: goldflower (金色小黃花)   2018-04-07 20:35:00
你把(n,m)和(m,1)做dot就是(n,1) (n,)就網址那種吧不過想借標題問一下 我其實不太清楚(n,)這種表示法好處在哪裡 除了可以直接內積得scalar以外不然我一般使用都轉成2d array對我來說運算比較直覺而且要內積直接np.sum(np.multiply(...))也可以不曉得(n,)到底有啥優勢@@
作者: vfgce (小兵)   2018-04-07 20:56:00
(n,)是一維,(n,1)是二維...觀念清楚就不會不知道結果..(n,)就一維啊... 如果用不到二維就不用寫成(n,1)
作者: Panthalassa   2018-04-07 20:57:00
(n,) 好處: 轉 list 會直接變成 [float](n,)好處: 取值的時候不用 [n,0] 直接 [n] 就好
作者: goldflower (金色小黃花)   2018-04-07 21:23:00
寫數學時不會特別把nx1當作二維吧(雖然numpy上是如此)不過可能就我自己很少不搭配矩陣用所以比較鑽牛角尖P大講的的確我會flatten完後做類似操作感覺上是在純向量運算上這種表示法code會比較乾淨想了下覺得純向量下nx1和1xn似乎都不太好畢竟這些是在定義矩陣運算後才會出現的結果突然覺得這種表示法其實比較嚴謹了哈哈 感謝二位
作者: Bondrewd (The Novel)   2018-04-08 00:50:00
謝謝樓上幾位大德

Links booklink

Contact Us: admin [ a t ] ucptt.com