zoukankan      html  css  js  c++  java
  • Python学习之路:NumPy进阶

    import numpy as np;
    
    #创建数组的四种办法
    ##可以传入任何类数组
    a = np.array([0,1,2,3,4]);
    b = np.array((0,1,2,3,4));
    c = np.arange(5);
    d = np.linspace(0,2*np.pi,5);
    print(a);
    print(b);
    print(c);
    print(d);
    
    [0 1 2 3 4]
    [0 1 2 3 4]
    [0 1 2 3 4]
    [0.         1.57079633 3.14159265 4.71238898 6.28318531]
    
    #创建二维数组
    a = np.array([[11, 12, 13, 14, 15],
                  [16, 17, 18, 19, 20],
                  [21, 22, 23, 24, 25],
                  [26, 27, 28 ,29, 30],
                  [31, 32, 33, 34, 35]]);
    print(a);
    
    [[11 12 13 14 15]
     [16 17 18 19 20]
     [21 22 23 24 25]
     [26 27 28 29 30]
     [31 32 33 34 35]]
    
    #多维数组的切片
    print(a[0,1:4]);
    print(a[1:4,0]);
    print(a[:,1]);
    ##骚操作 用法:起始索引:结束索引:步长(不包括结束索引)
    print(a[1:4:1,0:5:2]);
    
    [12 13 14]
    [16 21 26]
    [12 17 22 27 32]
    [[16 18 20]
     [21 23 25]
     [26 28 30]]
    
    #多维数组的属性
    print(a);
    print(type(a));
    print(a.dtype);
    print(a.size);
    print(a.shape);
    print('-------------')
    print(a.itemsize);#每个元素所占的字节数
    print(a.ndim);#数组的维数
    print(a.nbytes);#数组中的所有数据消耗掉的字节数。你应该注意到,这并不计算数组的开销,因此数组占用的实际空间将稍微大一点
    
    [[11 12 13 14 15]
     [16 17 18 19 20]
     [21 22 23 24 25]
     [26 27 28 29 30]
     [31 32 33 34 35]]
    <class 'numpy.ndarray'>
    int32
    25
    (5, 5)
    -------------
    4
    2
    100
    
    #多维数组的运算
    a = np.arange(25)
    a = a.reshape((5, 5))
    
    b = np.array([10, 62, 1, 14, 2, 56, 79, 2, 1, 45,
                  4, 92, 5, 55, 63, 43, 35, 6, 53, 24,
                  56, 3, 56, 44, 78])
    b = b.reshape((5,5))
    #两个数组做比较是是数组中每个元素依次比较,要求两个矩阵维度一致
    print(a < b)
    print(a > b)
    print('----------------------------------');
    print(a[a<b]);
    print('----------------------------------');
    print(a.dot(b));
    
    
    
    [[ True  True False  True False]
     [ True  True False False  True]
     [False  True False  True  True]
     [ True  True False  True  True]
     [ True False  True  True  True]]
    [[False False  True False  True]
     [False False  True  True False]
     [ True False  True False False]
     [False False  True False False]
     [False  True False False False]]
    ----------------------------------
    [ 0  1  3  5  6  9 11 13 14 15 16 18 19 20 22 23 24]
    ----------------------------------
    [[ 417  380  254  446  555]
     [1262 1735  604 1281 1615]
     [2107 3090  954 2116 2675]
     [2952 4445 1304 2951 3735]
     [3797 5800 1654 3786 4795]]
    
    #另外一些常见的函数
    a = np.arange(10);
    print(a);
    print(a.sum());
    print(a.min());
    print(a.max());
    #累加函数
    print(a.cumsum());
    
    
    [0 1 2 3 4 5 6 7 8 9]
    45
    0
    9
    [ 0  1  3  6 10 15 21 28 36 45]
    
    #花式索引
    ##检索特定的元素,类似多重赋值
    a = np.arange(0,100,10);
    indices = [1,5,-1];
    b = a[indices];
    print(a);
    print(b);
    print('-------------------------');
    a = np.ones((5,5));
    a[0,0] = 5;
    a[2,0] = 2;
    print(a);
    indices = [0,2,3];
    b = a[indices];
    print(b);
    
    [ 0 10 20 30 40 50 60 70 80 90]
    [10 50 90]
    -------------------------
    [[5. 1. 1. 1. 1.]
     [1. 1. 1. 1. 1.]
     [2. 1. 1. 1. 1.]
     [1. 1. 1. 1. 1.]
     [1. 1. 1. 1. 1.]]
    [[5. 1. 1. 1. 1.]
     [2. 1. 1. 1. 1.]
     [1. 1. 1. 1. 1.]]
    
    #布尔屏蔽
    import matplotlib.pyplot as plt;
    a = np.linspace(0, 2 * np.pi, 50);
    b = np.sin(a);
    plt.plot(a,b);
    mask = b >= 0;
    plt.plot(a[mask], b[mask], 'bo');
    mask = (b >= 0) & (a <= np.pi / 2);
    plt.plot(a[mask], b[mask], 'go');
    plt.show();
    
    

    #缺省索引
    # Incomplete Indexing
    a = np.arange(0, 100, 10)
    b = a[:5] # [0:5]
    print(a>=50);
    c = a[a >= 50]
    print(b) # >>>[ 0 10 20 30 40]
    print(c) # >>>[50 60 70 80 90]
    
    [False False False False False  True  True  True  True  True]
    [ 0 10 20 30 40]
    [50 60 70 80 90]
    
    #Where 函数
    a = np.arange(0,100,10);
    print(a[a>=50]);
    print(np.where(a < 50));
    print(np.where(a < 50)[0]);
    
    [50 60 70 80 90]
    (array([0, 1, 2, 3, 4], dtype=int64),)
    [0 1 2 3 4]
    
    
    
  • 相关阅读:
    每天一个linux命令(22):find 命令的参数详解
    在gitlab中创建项目后如何用git初始上传项目
    TensorBoard可视化
    docker CMD 和 ENTRYPOINT 区别
    django 项目开发及部署遇到的坑
    nginx + uwsgi 部署django项目
    centos7 追加python3 + 使用pip + virtualenv
    docker 常用命令
    Django+celery+rabbitmq实现邮件发送
    web框架链接
  • 原文地址:https://www.cnblogs.com/doubest/p/10599616.html
Copyright © 2011-2022 走看看