Python中的高性能科学计算基础包——Numpy

本文介绍使用Python和NumPy库实现随机漫步的过程,通过创建一个初始位置为0的漫步者,进行1000步随机移动,每一步随机选择前进或后退,并展示漫步路径的数组表示。

数组创建函数

在这里插入图片描述

ndarray的数据类型

在这里插入图片描述

二维数组的索引方式

在这里插入图片描述

二维数组切片

在这里插入图片描述

通用函数

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

基本数组的统计方法

在这里插入图片描述

数组的集合运算

在这里插入图片描述

常用的线性代数函数

在这里插入图片描述

随机数

在这里插入图片描述

范例:随机漫步

import random

position = 0
walk = [position]
steps = 1000
for i in range(steps):
    step = 1 if random.randint(0,1) else -1
    position += step
    walk.append(position)

结果如下图所示:
在这里插入图片描述

nsteps = 1000
draws = np.random.randint(0,2,size=nsteps)
steps = np.where(draws>0, 1, -1)
walk = steps.cumsum()
array([  1,   2,   3,   2,   3,   4,   5,   4,   3,   4,   3,   2,   1,
         0,  -1,  -2,  -3,  -2,  -3,  -2,  -1,  -2,  -1,   0,   1,   0,
        -1,   0,  -1,   0,  -1,   0,   1,   2,   3,   4,   3,   2,   1,
         0,   1,   0,   1,   2,   3,   4,   5,   6,   7,   6,   5,   6,
         7,   6,   5,   4,   5,   4,   3,   2,   1,   2,   1,   0,  -1,
        -2,  -1,   0,   1,   2,   3,   2,   3,   4,   5,   4,   5,   4,
         5,   6,   7,   6,   5,   6,   7,   6,   7,   8,   9,   8,   7,
         8,   7,   8,   9,   8,   9,   8,   9,   8,   7,   8,   9,  10,
        11,  10,  11,  10,   9,   8,   9,   8,   9,  10,  11,  12,  13,
        14,  13,  14,  13,  12,  11,  12,  13,  12,  11,  12,  13,  14,
        13,  14,  13,  12,  13,  14,  13,  12,  11,  10,  11,  10,   9,
         8,   9,   8,   7,   6,   7,   6,   5,   6,   5,   6,   5,   4,
         5,   6,   7,   6,   5,   4,   5,   4,   3,   2,   3,   2,   1,
         2,   1,   0,   1,   2,   3,   4,   5,   6,   5,   4,   3,   2,
         1,   0,   1,   0,   1,   2,   3,   4,   3,   2,   1,   2,   1,
         2,   3,   4,   3,   2,   1,   2,   1,   0,   1,   2,   1,   0,
         1,   2,   3,   4,   5,   6,   7,   6,   7,   6,   5,   4,   3,
         4,   3,   4,   3,   4,   5,   6,   7,   6,   5,   6,   5,   4,
         3,   4,   3,   2,   3,   4,   5,   6,   5,   6,   5,   6,   7,
         8,   7,   8,   7,   8,   7,   6,   5,   6,   7,   8,   7,   8,
         7,   6,   7,   6,   7,   6,   5,   4,   3,   2,   1,   0,   1,
         0,  -1,   0,   1,   2,   1,   0,   1,   0,   1,   0,  -1,  -2,
        -1,  -2,  -1,  -2,  -3,  -2,  -3,  -4,  -5,  -6,  -5,  -4,  -3,
        -4,  -3,  -2,  -1,  -2,  -3,  -2,  -1,  -2,  -3,  -4,  -3,  -2,
        -3,  -4,  -3,  -2,  -1,  -2,  -3,  -4,  -5,  -6,  -7,  -6,  -5,
        -6,  -7,  -8,  -7,  -8,  -9,  -8,  -9,  -8,  -9,  -8,  -9, -10,
        -9, -10, -11, -10,  -9,  -8,  -9,  -8,  -7,  -8,  -9, -10, -11,
       -10, -11, -10,  -9, -10,  -9,  -8,  -9,  -8,  -9, -10,  -9,  -8,
        -9,  -8,  -7,  -8,  -7,  -8,  -9, -10,  -9,  -8,  -9,  -8,  -7,
        -6,  -5,  -4,  -3,  -4,  -3,  -4,  -5,  -4,  -5,  -4,  -3,  -4,
        -3,  -2,  -3,  -2,  -3,  -4,  -5,  -4,  -3,  -4,  -5,  -4,  -3,
        -2,  -3,  -4,  -3,  -2,  -3,  -2,  -3,  -2,  -3,  -2,  -1,   0,
        -1,  -2,  -3,  -2,  -1,  -2,  -3,  -4,  -3,  -2,  -1,  -2,  -1,
         0,   1,   2,   1,   0,   1,   0,   1,   2,   3,   4,   5,   6,
         5,   6,   7,   8,   9,  10,   9,   8,   7,   8,   7,   6,   5,
         6,   7,   6,   5,   6,   5,   6,   7,   6,   5,   6,   5,   4,
         5,   4,   3,   2,   1,   2,   1,   2,   3,   2,   3,   2,   3,
         4,   5,   6,   7,   6,   7,   8,   9,  10,  11,  10,   9,  10,
         9,  10,  11,  12,  13,  14,  13,  14,  15,  14,  13,  14,  13,
        12,  13,  14,  15,  16,  17,  18,  17,  16,  15,  16,  15,  16,
        15,  14,  13,  14,  15,  16,  15,  14,  13,  14,  13,  14,  15,
        16,  17,  18,  19,  18,  17,  16,  17,  16,  15,  14,  15,  14,
        13,  14,  15,  14,  13,  12,  13,  14,  13,  12,  13,  12,  13,
        14,  15,  16,  17,  18,  19,  20,  19,  20,  19,  20,  19,  20,
        19,  20,  19,  20,  21,  20,  21,  22,  23,  24,  25,  26,  25,
        26,  25,  26,  27,  26,  27,  28,  29,  30,  31,  30,  31,  32,
        31,  30,  29,  30,  31,  32,  31,  32,  33,  32,  31,  32,  31,
        32,  33,  32,  33,  34,  33,  34,  35,  34,  33,  34,  35,  34,
        33,  32,  31,  32,  33,  34,  35,  34,  33,  34,  35,  34,  35,
        34,  35,  34,  35,  36,  35,  34,  33,  34,  35,  34,  33,  32,
        33,  32,  31,  32,  33,  34,  33,  34,  33,  32,  31,  30,  31,
        30,  29,  30,  31,  30,  29,  28,  27,  28,  27,  26,  25,  24,
        25,  24,  25,  26,  25,  26,  25,  26,  27,  28,  27,  26,  27,
        26,  25,  26,  25,  26,  25,  24,  25,  26,  25,  26,  27,  26,
        27,  26,  25,  26,  25,  24,  25,  26,  25,  26,  27,  28,  27,
        28,  27,  28,  29,  30,  29,  28,  29,  30,  29,  28,  29,  30,
        31,  32,  31,  32,  31,  32,  31,  30,  29,  30,  29,  28,  29,
        30,  31,  30,  29,  30,  29,  30,  29,  28,  29,  28,  29,  30,
        31,  32,  33,  32,  31,  32,  33,  34,  33,  32,  31,  32,  33,
        34,  35,  34,  33,  34,  35,  34,  33,  34,  35,  36,  35,  34,
        35,  34,  33,  32,  33,  34,  33,  34,  35,  34,  33,  32,  33,
        34,  35,  34,  35,  34,  35,  34,  35,  36,  35,  34,  33,  34,
        35,  34,  35,  34,  33,  32,  33,  34,  33,  34,  33,  34,  33,
        32,  33,  34,  33,  32,  31,  32,  31,  30,  29,  30,  29,  28,
        29,  30,  29,  30,  29,  30,  31,  30,  29,  28,  29,  28,  29,
        28,  27,  28,  27,  28,  29,  30,  29,  30,  31,  32,  33,  34,
        35,  36,  37,  36,  37,  38,  39,  38,  39,  38,  37,  38,  39,
        40,  41,  40,  39,  38,  39,  38,  39,  38,  37,  38,  37,  36,
        35,  36,  35,  36,  37,  38,  37,  38,  37,  38,  39,  38,  39,
        38,  39,  40,  39,  40,  41,  42,  43,  42,  41,  40,  39,  38,
        39,  40,  39,  40,  41,  40,  39,  38,  39,  40,  41,  40,  41,
        40,  39,  40,  39,  40,  41,  42,  41,  42,  41,  40,  39,  38,
        39,  38,  37,  38,  39,  40,  39,  40,  39,  40,  39,  38,  37,
        38,  37,  38,  39,  40,  39,  38,  39,  40,  41,  40,  39,  40,
        39,  38,  37,  38,  39,  40,  41,  42,  41,  40,  39,  38,  37,
        38,  39,  38,  37,  38,  37,  38,  39,  38,  37,  36,  37,  36,
        35,  36,  35,  36,  35,  36,  37,  38,  39,  38,  37,  38],
      dtype=int32)

结果如下图所示:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值