作者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/cn.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