[問題] numpy疑問

作者: ChuYoYo0719 (你好)   2017-11-12 00:25:20
大家好, 我在使用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
謝謝大家幫忙
作者: AndyLee76 (AndyLee)   2017-11-12 01:18:00
就取出矩陣的第一個row啊
作者: pups003 (岡本)   2017-11-12 01:39:00
多開幾個維度試試看就知道了
作者: vfgce (小兵)   2017-11-12 08:02:00
a[0]在這是取第0個row資料,維度降一.a[:1]是用slicea取一個範圍內的資料,維度沒減,所以當然是二個括號(二維),你的例子只是剛好你取的slice只有一個而已,讓你想不通....把你的資料弄到3X3,試看看a[:1],a[:2],a[1:1],a[0],a[1],a[2]....打錯,不是a[1:1]是a[1:2]...PCA跟這無關,我說的降維純指ndim減一.在你資料中,想取維持二維的單一row資料,可以用a[0,np.newaxis]用來也沒比較簡潔..
作者: tony123930 (HW)   2017-11-13 17:22:00
應該是說,這是python的用法問題。arr[:n]指的是回傳0~n-1的array,你的範例就只是剛好選到一個,所以回傳arr[0]以後再包成array

Links booklink

Contact Us: admin [ a t ] ucptt.com