• Numpy介绍


    Numpy介绍

    使用之前需要导入Numpy

    import numpy as np
    
    • 1

    NumPy 的主要对象是同构多维数组。它是一个元素表(通常是数字),所有类型都相同,由非负整数元组索引。在 NumPy 中,维度称为轴。 例如,3D 空间中一个点的坐标[1, 2, 1]只有一个轴。该轴有 3 个元素,因此我们说它的长度为 3。在下图中的示例中,数组有 2 个轴。第一个轴的长度为 2,第二个轴的长度为 3。

    NumPy 的数组类称为ndarray。它也被称为别名 array。请注意,numpy.array这与标准 Python 库类不同array.array,后者仅处理一维数组并提供较少的功能。ndarray对象更重要的属性是:

    • ndarray.ndim 数组的轴数(维度)。
    • ndarray.shape 数组的维度。这是一个整数元组,象征着每个维度中数组的大小。对于具有n行和m列的矩阵,shape将为(n,m)。因此,元组shape的长度是轴的数量,ndim。
    • 数组大小数组的元素总数。这等于shape元素的乘积。
    • ndarray.dtype 描述数组中元素类型的对象。可以使用标准 Python 类型创建或指定 dtype。此外,NumPy 提供了自己的类型。numpy.int32、numpy.int16 和 numpy.float64 是一些示例。
    • ndarray.itemsize 数组每个元素的大小(以字节为单位)。例如,一个类型元素的数组float64有itemsize8 个(=64/8),而一个类型的元素complex32有itemsize4 个(=32/8)。它相当于ndarray.dtype.itemsize。
    • ndarray.data 包含数组实际元素的缓冲区。通常,我们不需要使用此属性,因为我们将使用索引工具访问数组中的元素。

    NumPy 数组创建

    array创建

    可以使用array函数从常规 Python 列表或元组创建数组

    a = np.array([1,3,11])
    a
    
    • 1
    • 2
    array([ 1,  3, 11])
    
    • 1
    a.shape
    
    • 1
    (3,)
    
    • 1
    a.dtype
    
    • 1
    dtype('int32')
    
    • 1
    a = np.array([[1.1,2,3],[2,4,8]])
    a
    
    • 1
    • 2
    array([[1.1, 2. , 3. ],
           [2. , 4. , 8. ]])
    
    • 1
    • 2
    a.shape
    
    • 1
    (2, 3)
    
    • 1
    a.dtype
    
    • 1
    dtype('float64')
    
    • 1

    zeros,ones创建

    a = np.zeros((3,8))
    a
    
    • 1
    • 2
    array([[0., 0., 0., 0., 0., 0., 0., 0.],
           [0., 0., 0., 0., 0., 0., 0., 0.],
           [0., 0., 0., 0., 0., 0., 0., 0.]])
    
    • 1
    • 2
    • 3
    a = np.ones((2,5))
    a
    
    • 1
    • 2
    array([[1., 1., 1., 1., 1.],
           [1., 1., 1., 1., 1.]])
    
    • 1
    • 2
    # 指定类型
    a = np.ones((4,2),dtype=np.float64)
    a.dtype
    
    • 1
    • 2
    • 3
    dtype('float64')
    
    • 1

    arange创建

    np.arange(1,3)
    
    • 1
    array([1, 2])
    
    • 1
    np.arange(1,11,3)
    
    • 1
    array([ 1,  4,  7, 10])
    
    • 1
    np.array([np.arange(1,5,0.5),np.arange(1,9)])
    
    • 1
    array([[1. , 1.5, 2. , 2.5, 3. , 3.5, 4. , 4.5],
           [1. , 2. , 3. , 4. , 5. , 6. , 7. , 8. ]])
    
    • 1
    • 2

    随机数创建

    #生成一个 0 到 100 之间的随机整数:
    np.random.randint(100)
    
    • 1
    • 2
    67
    
    • 1
    # random 模块的 rand() 方法返回 0 到 1 之间的随机浮点数。
    np.random.rand()
    
    • 1
    • 2
    0.8036665376544574
    
    • 1
    np.random.rand(6,3)
    
    • 1
    array([[0.14565413, 0.67196986, 0.01603824],
           [0.05228213, 0.72782701, 0.47755347],
           [0.62613132, 0.08992243, 0.23964293],
           [0.23977211, 0.46031127, 0.22726328],
           [0.83314693, 0.79064596, 0.24260102],
           [0.73696135, 0.86420688, 0.86527412]])
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    #randint() 方法接受 size 参数,您可以在其中指定数组的形状。
    np.random.randint(30,50,size = (6))
    
    • 1
    • 2
    array([48, 47, 32, 33, 37, 48])
    
    • 1
    np.random.randint(44,51,size = (3,6))
    
    • 1
    array([[44, 47, 47, 46, 46, 48],
           [45, 44, 48, 49, 45, 50],
           [50, 46, 49, 49, 46, 50]])
    
    • 1
    • 2
    • 3
    #从数组生成随机数
    np.random.choice([1,5,7])
    
    • 1
    • 2
    7
    
    • 1
    np.random.choice([1,5,7,11,32],size = (2,3))
    
    • 1
    array([[ 5, 32,  1],
           [ 1, 11, 11]])
    
    • 1
    • 2

    数组变形reshape

    a = np.array([np.arange(1,5,0.5),np.arange(1,9)])
    a
    
    • 1
    • 2
    array([[1. , 1.5, 2. , 2.5, 3. , 3.5, 4. , 4.5],
           [1. , 2. , 3. , 4. , 5. , 6. , 7. , 8. ]])
    
    • 1
    • 2
    a.reshape(4,4)
    
    • 1
    array([[1. , 1.5, 2. , 2.5],
           [3. , 3.5, 4. , 4.5],
           [1. , 2. , 3. , 4. ],
           [5. , 6. , 7. , 8. ]])
    
    • 1
    • 2
    • 3
    • 4
    a.reshape(2,2,4)
    
    • 1
    array([[[1. , 1.5, 2. , 2.5],
            [3. , 3.5, 4. , 4.5]],
    
           [[1. , 2. , 3. , 4. ],
            [5. , 6. , 7. , 8. ]]])
    
    • 1
    • 2
    • 3
    • 4
    • 5

    运算

    a = np.array([2,3,11])
    a
    
    • 1
    • 2
    array([ 2,  3, 11])
    
    • 1
    b = np.arange(1,4)
    b
    
    • 1
    • 2
    array([1, 2, 3])
    
    • 1
    a - b
    
    • 1
    array([1, 1, 8])
    
    • 1
    # 几次方
    a ** 3
    
    • 1
    • 2
    array([   8,   27, 1331], dtype=int32)
    
    • 1
    # sin
    np.sin(a)
    
    • 1
    • 2
    array([ 0.90929743,  0.14112001, -0.99999021])
    
    • 1
    # 大小比较
    a <3
    
    • 1
    • 2
    array([ True, False, False])
    
    • 1
    #  数组中按元素进行运算
    a * b
    
    • 1
    • 2
    array([ 2,  6, 33])
    
    • 1
    # 矩阵乘积
    a = np.array([[2,3],[1,5]])
    b = np.array([[1,2],[3,3]])
    a
    
    • 1
    • 2
    • 3
    • 4
    array([[2, 3],
           [1, 5]])
    
    • 1
    • 2
    b
    
    • 1
    array([[1, 2],
           [3, 3]])
    
    • 1
    • 2
    a @ b
    
    • 1
    array([[11, 13],
           [16, 17]])
    
    • 1
    • 2
    a.dot(b)
    
    • 1
    array([[11, 13],
           [16, 17]])
    
    • 1
    • 2
    #+=操作
    a
    
    • 1
    • 2
    array([[2, 3],
           [1, 5]])
    
    • 1
    • 2
    a+=1
    a
    
    • 1
    • 2
    array([[4, 5],
           [3, 7]])
    
    • 1
    • 2
    # 统计
    a.max()
    
    • 1
    • 2
    7
    
    • 1
    a.min()
    
    • 1
    3
    
    • 1
    a.sum()
    
    • 1
    19
    
    • 1
    np.sort(a)
    
    • 1
    array([[4, 5],
           [3, 7]])
    
    • 1
    • 2
    np.exp(a)
    
    • 1
    array([[  54.59815003,  148.4131591 ],
           [  20.08553692, 1096.63315843]])
    
    • 1
    • 2
    np.add(a,b)
    
    • 1
    array([[ 5,  7],
           [ 6, 10]])
    
    • 1
    • 2

    NumPy 索引、切片和迭代

    a = np.array([[1,2,3],[4,6,9]])
    a
    
    • 1
    • 2
    array([[1, 2, 3],
           [4, 6, 9]])
    
    • 1
    • 2
    a[1]
    
    • 1
    array([4, 6, 9])
    
    • 1
    a[1][2]
    
    • 1
    9
    
    • 1
    a[1][1:3]
    
    • 1
    array([6, 9])
    
    • 1
    a[::-1]## reversed a
    
    • 1
    array([[4, 6, 9],
           [1, 2, 3]])
    
    • 1
    • 2

    数组类型和类型之间的转换

    Numpy 类型C型描述
    numpy.bool_bool存储为字节的布尔值(真或假)
    numpy.bytesigned char平台定义
    numpy.ubyteunsigned char平台定义
    numpy.shortshort平台定义
    numpy.ushortunsigned short平台定义
    numpy.intcint平台定义
    numpy.uintcunsigned int平台定义
    numpy.int_long平台定义
    numpy.uintunsigned long平台定义
    numpy.longlonglong long平台定义
    numpy.ulonglongunsigned long long平台定义
    numpy.halfnumpy.float16半精度浮点数:符号位,5 位指数,10 位尾数
    numpy.singlefloat平台定义的单精度浮点数:通常为符号位、8 位指数、23 位尾数
    numpy.doubledouble平台定义的双精度浮点数:通常为符号位、11 位指数、52 位尾数。
    numpy.longdoublelong double平台定义的扩展精度浮点数
    numpy.csinglefloat complex复数,由两个单精度浮点数表示(实部和虚部)
    numpy.cdoubledouble complex复数,由两个双精度浮点数(实部和虚部)表示。
    numpy.clongdoublelong double complex复数,由两个扩展精度浮点数(实部和虚部)表示。
  • 相关阅读:
    队列的链表实现 题目(难度1/10)
    【react基础02】编写函数式组件和类组件
    mybatis 自动化处理 mysql 的json类型字段 终极方案
    地暖管的选材
    React的Key和diff
    JavaSE——选择排序算法、冒泡排序法、二分查找法
    【基于形态学的权重自适应去噪】
    记录将excel表无变形的弄进word里面来
    SQL优化——如何写出高效率SQL
    探索Selenium:通过JavaScript增强UI测试效率和效果
  • 原文地址:https://blog.csdn.net/weixin_43788986/article/details/126211124