[问题] 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