numpy: matrix.getA()

在学习<机器学习实战>中,在logistic回归这一章节中,其中,遇到了一个问题

weights = wei.getA()

其中wei是一个矩阵
getA()是numpy的一个函数,numpy.matrix.getA

matrix.getA()
   Return self  as an ndarray object.
  Equivalent to np.asarray(self)
Parameters:  None
Returns:    __ret_: ndarray
           self  as an  ndarray

Examples

>>> 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:\Python\lib\site-packages\numpy\matrixlib\defmatrix.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
>>>

可以看出。我们可以取出任何一个值



作者:安东可
链接:https://www.jianshu.com/p/37a9cb41401f
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值