作者ChuYoYo0719 (你好)
看板Python
標題[問題] numpy疑問
時間Sun Nov 12 00:25:20 2017
大家好, 我在使用numpy時遇到了下面的問題
>>>import numpy as np
>>>a = np.array([[1,2,3,4],[5,6,7,8]])
>>>a[0]
array([1,2,3,4])
>>>a[: 1]
array([[1,2,3,4]])
>>>a[0].shape
(4,)
>>>a[: 1].shape
(1,4)
a[: 1]是誤打誤撞試出來的
想請問a[: 1]這個寫法為什麼可以得到1*4的array
謝謝大家幫忙
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.116.245.185
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Python/M.1510417522.A.D05.html
1F:推 AndyLee76: 就取出矩陣的第一個row啊 11/12 01:18
a[0]也是取出row 可是他的外面不會多一對中括號
想問為什麼slice的寫法會多一對中括號
因為在使用的function需要2維array當引數 不能是1維的
2F:推 pups003: 多開幾個維度試試看就知道了 11/12 01:39
※ 編輯: ChuYoYo0719 (140.116.245.185), 11/12/2017 01:44:02
※ 編輯: ChuYoYo0719 (140.116.245.185), 11/12/2017 01:55:28
3F:推 vfgce: a[0]在這是取第0個row資料,維度降一.a[:1]是用slicea取一個 11/12 08:02
4F:→ vfgce: 範圍內的資料,維度沒減,所以當然是二個括號(二維),你的例子 11/12 08:03
5F:→ vfgce: 只是剛好你取的slice只有一個而已,讓你想不通....把你的資 11/12 08:04
6F:→ vfgce: 料弄到3X3,試看看a[:1],a[:2],a[1:1],a[0],a[1],a[2].... 11/12 08:05
7F:推 vfgce: 打錯,不是a[1:1]是a[1:2]... 11/12 08:08
我後來有試著改變slice的範圍,有理解了slice是取範圍內的資料所以不會降維
那一般要取第i個不會降維的row, 都是用a[i:i-1]這種寫法, 還是有另外的方式
(google關鍵字有降維只會找到PCA ~"~ )
※ 編輯: ChuYoYo0719 (140.116.245.185), 11/12/2017 12:14:03
8F:推 vfgce: PCA跟這無關,我說的降維純指ndim減一. 11/12 19:14
9F:→ vfgce: 在你資料中,想取維持二維的單一row資料, 11/12 19:16
10F:→ vfgce: 可以用a[0,np.newaxis] 11/12 19:17
11F:推 vfgce: 用來也沒比較簡潔.. 11/12 19:19
12F:推 tony123930: 應該是說,這是python的用法問題。arr[:n]指的是回傳0 11/13 17:22
13F:→ tony123930: ~n-1的array,你的範例就只是剛好選到一個,所以回傳a 11/13 17:22
14F:→ tony123930: rr[0]以後再包成array 11/13 17:22