[問題] numpy疑問

看板Python作者 (你好)時間6年前 (2017/11/12 00:25), 6年前編輯推噓7(707)
留言14則, 4人參與, 6年前最新討論串1/1
大家好, 我在使用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://www.ptt.cc/bbs/Python/M.1510417522.A.D05.html

11/12 01:18, 6年前 , 1F
就取出矩陣的第一個row啊
11/12 01:18, 1F
a[0]也是取出row 可是他的外面不會多一對中括號 想問為什麼slice的寫法會多一對中括號 因為在使用的function需要2維array當引數 不能是1維的

11/12 01:39, 6年前 , 2F
多開幾個維度試試看就知道了
11/12 01:39, 2F
※ 編輯: ChuYoYo0719 (140.116.245.185), 11/12/2017 01:44:02 ※ 編輯: ChuYoYo0719 (140.116.245.185), 11/12/2017 01:55:28

11/12 08:02, 6年前 , 3F
a[0]在這是取第0個row資料,維度降一.a[:1]是用slicea取一個
11/12 08:02, 3F

11/12 08:03, 6年前 , 4F
範圍內的資料,維度沒減,所以當然是二個括號(二維),你的例子
11/12 08:03, 4F

11/12 08:04, 6年前 , 5F
只是剛好你取的slice只有一個而已,讓你想不通....把你的資
11/12 08:04, 5F

11/12 08:05, 6年前 , 6F
料弄到3X3,試看看a[:1],a[:2],a[1:1],a[0],a[1],a[2]....
11/12 08:05, 6F

11/12 08:08, 6年前 , 7F
打錯,不是a[1:1]是a[1:2]...
11/12 08:08, 7F
我後來有試著改變slice的範圍,有理解了slice是取範圍內的資料所以不會降維 那一般要取第i個不會降維的row, 都是用a[i:i-1]這種寫法, 還是有另外的方式 (google關鍵字有降維只會找到PCA ~"~ ) ※ 編輯: ChuYoYo0719 (140.116.245.185), 11/12/2017 12:14:03

11/12 19:14, 6年前 , 8F
PCA跟這無關,我說的降維純指ndim減一.
11/12 19:14, 8F

11/12 19:16, 6年前 , 9F
在你資料中,想取維持二維的單一row資料,
11/12 19:16, 9F

11/12 19:17, 6年前 , 10F
可以用a[0,np.newaxis]
11/12 19:17, 10F

11/12 19:19, 6年前 , 11F
用來也沒比較簡潔..
11/12 19:19, 11F

11/13 17:22, 6年前 , 12F
應該是說,這是python的用法問題。arr[:n]指的是回傳0
11/13 17:22, 12F

11/13 17:22, 6年前 , 13F
~n-1的array,你的範例就只是剛好選到一個,所以回傳a
11/13 17:22, 13F

11/13 17:22, 6年前 , 14F
rr[0]以後再包成array
11/13 17:22, 14F
文章代碼(AID): #1Q1oHoq5 (Python)