Python numpy中矩阵的基本用法汇总
2019-09-13 11:52:28 来源:易采站长站 作者:于丽
4, matrix.getA()
getA()是numpy的一个函数,作用是将矩阵转成一个ndarray,getA()函数和mat()函数的功能相反,是将一个矩阵转化为数组。
如果不转,矩阵的每个元素将无法取出,会造成越界的问题,其具体解释如下:
matrix.getA() Return self as an ndarray object. Equivalent to np.asarray(self) Parameters: None Returns: __ret_: ndarray self as an ndarray
举例如下:
>>> x = np.matrix(np.arange(12).reshape((3,4))); x matrix([[ 0, 1, 2, 3], [ 4, 5, 6, 7], [ 8, 9, 10, 11]]) >>> x.getA() array([[ 0, 1, 2, 3], [ 4, 5, 6, 7], [ 8, 9, 10, 11]])
那么为什么需要转换呢?
因为在画出数据集合的函数中,代码如下(取自机器学习实战Logistic回归最佳拟合直线的函数)
def plotBestFit(weights): weights = weights.getA() ... for i in range(n): #分类 if int(labelMat[i]) == 1: xcord1.append(dataArr[i, 1]) ycord1.append(dataArr[i, 2]) else: xcord2.append(dataArr[i, 1]) ycord2.append(dataArr[i, 2])
在这个代码,我们需要取出其中每一行每一列的值
如果是矩阵的话,我们测试一下:
>>> b matrix([[1, 2, 3, 4], [1, 2, 3, 4], [1, 2, 3, 4], [1, 2, 3, 4]]) >>> b[1][1] Traceback (most recent call last): File "<stdin>", line 1, in <module> File "D:Pythonlibsite-packages umpymatrixlibdefmatrix.py", line 284, in __getitem__ out = N.ndarray.__getitem__(self, index) IndexError: index 1 is out of bounds for axis 0 with size 1 >>> >>> len(b[1]) 1 >>> len(b[1][0]) 1
可以发现我们取出矩阵的一行大小只有1,如果你使用b[1][1],b[1][2]之类的就会越界
当我们转为np.array类型时
>>> c array([[1, 2, 3, 4], [1, 2, 3, 4], [1, 2, 3, 4], [1, 2, 3, 4]]) >>> len(c[1]) 4 >>> c[1][1] 2 >>>
可以看出,我们可以取出任何一个值。
Python矩阵的切片
1,行操作
li = [[1,1],[1,3],[2,3],[4,4],[2,4]] from numpy import * a = [[1,2],[3,4],[5,6]] a = mat(a) # 打印整个矩阵 print(a[0:]) ''' [[1 2] [3 4] [5 6]] ''' # 打印矩阵E从1行开始到末尾行的内容 print(a[1:]) ''' [[3 4] [5 6]] ''' # 表示打印矩阵E 从1行到3行的内容 print(a[1:3]) ''' [[3 4] [5 6]] '''
2,列操作
li = [[1,1],[1,3],[2,3],[4,4],[2,4]] from numpy import * mat = mat(li) # 在整个矩阵的基础下,打印1列(指的是序列为1的列 print(mat[:,0]) ''' [[1] [1] [2] [4] [2]] ''' # 在矩阵的1行到2行([1,3)) 的前提下打印两列 # 2 列不是指两列,而是序号为2的列 print(mat[1:3,1]) ''' [[3] [3]] '''
Python numpy库其他函数用法
Numpy 的tile函数用法
暂时禁止评论













闽公网安备 35020302000061号