【无标题】

Numpy和pandas

  • Numpy初体验

1,Numpy创建数组

Numpy 的arange方法创建多维数组。创建多维数组的方法是:

import numpy as np

b = np.array([np.arange(6),np.arange(6)])

numpy创建的数组可以直接复制,具体代码示例如下:

import numpy as np

x = [y for y in range(6)]

b=np.array([x]*4)

import numpy as np

# 定义cnmda函数

def cnmda(m,n):

    '''

    创建numpy数组

    参数:

           m:第一维的长度

           n: 第二维的长度

    返回值:

        ret: 一个numpy数组

    '''

    ret = 0

    # 请在此添加创建多维数组的代码并赋值给ret

    #********** Begin *********#

    b=np.arange(n);

    ret=np.array([b]*m)  

    #********** End **********#

    return ret

b=np.arange(n);

ret=np.array([b]*m)

2,Numpy数组的基本运算

Numpy库可以直接进行一些四则运算,快速的处理两个Numpy数组:

向量与向量之间:

1.加法

  1. In:np.add(a,b)  a+b
  2. Out:array([[5, 7, 9],
  3.        [5, 7, 9]])

2.减法

  1. In:np.subtract(a,b)  a-b
  2. Out:array([[-3, -3, -3],
  3.        [ 3,  3,  3]])

3.乘法(X乘)

  1. In:np.multiply(a,b)  a * b
  2. Out:array([[ 4, 10, 18],
  3.        [ 4, 10, 18]])

4.乘法(点乘)

  1. a = np.array([[1,2,3],[4,5,6]])
  2. b = np.array([4,5,6])
  3. In: np.dot(a,b) 
  4. Out:array([32, 77])

5.除法

  1. a = np.array([[1,2,3],[4,5,6]])
  2. b = np.array([[4,5,6],[1,2,3]])
  3. In:np.divide(a,b)  a/b
  4. Out:array([[ 0.25,  0.4 ,  0.5 ],
  5.        [ 4.  ,  2.5 ,  2.  ]])

向量与标量之间

a = np.array([[1,2,3],[4,5,6]])

1.加法

  1. In:  a +1
  2. Out:array([[2, 3, 4],
  3.        [5, 6, 7]])

2.减法

  1. In:  a -1
  2. Out:array([[0, 1, 2],
  3.        [3, 4, 5]])

3.乘法

  1. In: a*2
  2. Out:array([[ 2,  4,  6],
  3.        [ 8, 10, 12]])

4.除法

  1. In: a/2
  2. Out:array([[ 0.5,  1. ,  1.5],
  3.        [ 2. ,  2.5,  3. ]])

5.求余

  1. In:a%2
  2. Out:array([[1, 0, 1],
  3.        [0, 1, 0]])

6.矩阵转置

  1. In:a.T
  2. Out:array([[1, 4],
  3.        [2, 5],
  4.        [3, 6]])

7.矩阵的逆

矩阵可逆的充要条件是矩阵满秩。

  1. import numpy as np
  2. import numpy.linalg as lg
  3. a = np.array([[1,2,3],[4,5,6],[7,8,9]])
  4. In:lg.inv(a)
  5. Out:array([[  3.15251974e+15,  -6.30503948e+15,   3.15251974e+15],
  6.        [ -6.30503948e+15,   1.26100790e+16,  -6.30503948e+15],
  7.        [  3.15251974e+15,  -6.30503948e+15,   3.15251974e+15]])

import numpy as np

# 定义opeadd函数

def opeadd(m,b,n):

    '''

    参数:

    m:是一个数组

    b:是一个列表

    n:是列表中的索引

    你需要做的是 m+b[n]

    返回值:

    ret: 一个numpy数组

    '''    

    ret = 0

    #********** Begin *********#

    ret=m+b[n]

      #********** End **********#

    return ret

# 定义opemul函数

def opemul(m,b,n):

    '''

    参数:

    m:是一个数组

    b:是一个列表

    n:是列表中的索引

    你需要做的是 m*b[n]

    返回值:

    ret: 一个numpy数组

    '''

    ret = 0

    #********** Begin *********#

    ret=m*b[n]

    #********** End **********#

    return ret

3,第3关:Numpy数组的切片与索引

一维Numpy数组的切片操作与Python列表的切片一样。下面首先来定义数字0 1 2直到8的数组,然后通过指定下标37来选择数组的部分元素,这实际上就是提取数组中值为36的元素。

  1. In: import numpy as np
  2. In: a = np.arange(9)
  3. In: a[3:7]
  4. Out: array([3,4,5,6])

同时用下标选择元素,下标范围从07,并且下标每次递增2,如下所示:

  1. In: a[:7:2]
  2. Out:array([0,2,4,6])

也可以像Python数组一样,用负值下标来反转数组:

  1. In: a[::-1]
  2. Out: array([8,7,6,5,4,3,2,1,0])

对于二维数组的索引,类似与Python数组的列表:

  1. In: a=np.array([[1,2,3],[4,3,2]])
  2. In: a[1][0] 
  3. Out:array([4])
  4. In:a[1,:2]    #获取第1维的前2个元素
  5. Out:array([4, 3])

import numpy as np

# 定义cnmda函数

def ce(a,m,n):

    '''

    参数:

    a:是一个Numpy数组

    m:是第m维数组的索引

    n:第m维数组的前n个元素的索引

    返回值:

    ret: 一个numpy数组

    '''

    ret = 0

    # 请在此添加切片的代码,实现找出多维数组a中第m个数组的前n个元素 并赋值给ret

    #********** Begin *********#

    ret=a[m,:n]

    #********** End **********#

    return ret

ret= a[m,:n]

4,第4关:Numpy数组的堆叠

相关知识

改变数组形状reshape(),ravel(),flatten(),shape(),transpose()

数组的堆叠hstack(),vstack(),dstack()

改变数组形状

reshape()

  1. import numpy as np
  2. In: b = np.arange(24).reshape(2,3,4)
  3. In: b
  4. Out: array([[[ 0,  1,  2,  3],
  5.         [ 4,  5,  6,  7],
  6.         [ 8,  9, 10, 11]],
  7.        [[12, 13, 14, 15],
  8.         [16, 17, 18, 19],
  9.         [20, 21, 22, 23]]])

ravel()

拆解,将多维数组变成一维数组。

  1. In:  b.ravel()
  2. Out: array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16,
  3.        17, 18, 19, 20, 21, 22, 23])

flatten()

拉直,其功能与ravel()相同,但是flatten()返回的是真实的数组,需要分配新的内存空间,而ravel()仅仅是改变视图。

  1. In:  b.flatten()
  2. Out: array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16,
  3.        17, 18, 19, 20, 21, 22, 23])

shape()

使用元组改变数组形状。

  1. In: b.shape = (6,4)
  2. In: b
  3. out: array([[ 0,  1,  2,  3],
  4.        [ 4,  5,  6,  7],
  5.        [ 8,  9, 10, 11],
  6.        [12, 13, 14, 15],
  7.        [16, 17, 18, 19],
  8.        [20, 21, 22, 23]])

transpose()

转置。

  1. In: b.transpose()
  2. Out: array([[ 0,  4,  8, 12, 16, 20],
  3.        [ 1,  5,  9
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值