今天开始自学机器学习,python语言也是从零开始,其中一个函数shape()困惑了好久才弄明白,特地来分享一下,有错误之处请指出。
首先一些观点认为:A为矩阵,A.shape为输出矩阵A的行数与列数,A.shape[0]为输出行数,A.shape[1]为输出列数
>>> import numpy
>>> A=mat([[1,2,3],[4,5,6]])
>>> A.shape
(2L, 3L)
>>> A.shape[0]
2L
>>> A.shape[1]
3L
可以看到,矩阵A的行数与列数确实为2与3
然而A.shape[0]的用法为输出行数,为什么参数是0而不是别的数呢?
一些资料说,shape[x]内的参数x为第x+1维的长度,这就可以解释为什么输出行数的参数为0了。假如A矩阵由m行组成,每一行由n个数字组成,那么A矩阵的第一维长度为m,第二维长度为n。
下面为一些例子:
1.一维的数组
>>> A=array([1,2,3])
>>> A
array([1, 2, 3])
>>> A.shape
(3L,)
一维的长度就足以表示此数组。
2.二维的数组
>>> B=array([[1,2,3],[4,5,6]])
array([[1, 2, 3],
[4, 5, 6]])
>>> B.shape
(2L, 3L)
二维的长度宽度就足以表示此数组。
3.三维或更高维的数组
>>> C=array([[[1,2,3],[4,5,6]],[[7,8,9],[10,11,12]]])
>>> C
array([[[ 1, 2, 3],
[ 4, 5, 6]],
[[ 7, 8, 9],
[10, 11, 12]]])
>>> C.shape
(2L, 2L, 3L)
三维的长度宽度高度就足以表示此数组,以此类推,从而可以找到N维数组的某一维长度。
PS:第一次发博客,还不是很会用markdown ~>_<~+