• python Numpy


    Numpy入门

    1.什么是numpy

    NumPy是高性能科学计算和数据分析的基础包。它是pandas等其他各种工具的基础

    功能:

    • ndarray 一个强大的N维数组对象
    • 复杂(广播)功能
    • 用于集成C / C ++和Fortran代码的工具
    • 有用的线性代数,傅里叶变换和随机数能力

    安装使用方法:

    pip install numpy
    import numpy as np
    

    备注:

      在使用numpy进行科学计算时,可以安装scipy堆栈,例如Anaconda 具体安装的模块标准参考这里

    2.numpy基础

    numpy的主要对象是均匀的多维数组,数组内的各个元素类型相同。多维数组的类型为numpy.ndarray

    先来介绍下ndarray对象都有哪些属性:

    • ndarray.ndim : 数组的轴数(维数)。在Python世界中,维度的数量被称为等级。
    • ndarray.shape : 阵列的尺寸。这是一个整数元组,指示每个维度中数组的大小。对于具有n行和m列的矩阵,shape将是(n,m)。shape因此,元组的长度 是等级或维数 ndim。
    • ndarray.size : 数组的元素总数。这等于元素的乘积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 : 该缓冲区包含数组的实际元素。通常,我们不需要使用此属性,因为我们将使用索引设施访问数组中的元素。

    数组几种创建方法:

      1.使用array函数从常规python列表或元祖创建数组,结果数组的类型从序列中的元素类型推导出来

    >>>a = np.array([1,2,3,4,5])
    >>>a.dtype
    dtype('int32')
    >>>a = np.array([1.0,2.0,3.0,4.0,5.0])
    >>>a.dtype
    dtype('float64')
    
    # 创建一个二维数组
    b = np.array([[1.4,2.,3.],[5.,6.,7.]])
    # 创建时也可以指定数组类型(复数类型)
    b = np.array([[1,2],[3,4]],dtype=complex)
    

    通常,数组的元素最初是未知的,但它的大小是已知的。因此,NumPy提供了几个函数来创建具有初始占位符内容的数组。这些最小化生长阵列的必要性,这是昂贵的操作。
    该函数zeros创建一个充满零的数组,该函数 ones创建一个包含一个数组的数组,该函数empty 创建一个数组,其初始内容是随机的,并且取决于内存的状态。默认情况下,创建的数组的dtype为 float64。

    为了创建数字序列,NumPy提供了类似于range的函数返回数组而不是列表。

    >>>np.arange(10,20,2)
    array([10, 12, 14, 16, 18])
    
    >>>np.arange(10,20,2.5)     # 三个参数分别为起始,结束,步长,这里步长可以接受float参数
    array([ 10. ,  12.5,  15. ,  17.5])
    

    当arange与浮点参数一起使用时,由于有限的浮点精度,通常不可能预测获得的元素的数量。因此,通常最好使用linspace接收作为参数的函数的函数,而不是步长:

    >>>np.linspace(0,2,9)
    array([ 0.  ,  0.25,  0.5 ,  0.75,  1.  ,  1.25,  1.5 ,  1.75,  2.  ])
    
    >>>from numpy import pi
    >>> x = np.linspace(0,2*pi,100)
    

    也可以看看 :

    array, zeros, zeros_like, ones, ones_like, empty, empty_like, arange, linspace, numpy.random.rand, numpy.random.randn, fromfunctionfromfile

    打印数组:

    数据的打印会以很友好的方式显示出来,但在这里说明一点,如果数组太大而无法打印,numpy会自动跳过阵列的中央部分,可以更改打印选项来进行设置

    np.set_printoptions(threshold=nan)     # 打印全部 默认为1000
    np.set_printoptions(precision=3)        # 设置精度
    

    基本操作:

    >>> a = np.array( [20,30,40,50] )
    >>> b = np.arange( 4 )
    >>> b
    array([0, 1, 2, 3])
    >>> c = a-b
    >>> c
    array([20, 29, 38, 47])
    >>> b**2
    array([0, 1, 4, 9])
    >>> 10*np.sin(a)
    array([ 9.12945251, -9.88031624,  7.4511316 , -2.62374854])
    >>> a<35
    array([ True, True, False, False], dtype=bool)
    

    与许多矩阵语言不同,*在NumPy数组中运行元素。可以使用该dot功能或方法按照矩阵乘法的规则来运算的:

    >>> A = np.array( [[1,1],
    ...             [0,1]] )
    >>> B = np.array( [[2,0],
    ...             [3,4]] )
    >>> A*B                         # elementwise product
    array([[2, 0],
           [0, 4]])
    >>> A.dot(B)                    # matrix product
    array([[5, 4],
           [3, 4]])
    >>> np.dot(A, B)                # another matrix product
    array([[5, 4],
           [3, 4]])
    

    https://docs.scipy.org/doc/numpy/user/quickstart.html#quickstart-shape-manipulation

    待续:

    待续:

    待续:

    待续:

     

  • 相关阅读:
    Github基于Web的编辑器
    科技爱好者周刊(第 172 期):我们会死于气候灾难吗?
    走进京东618大促“产星”之路
    科技爱好者周刊(第 171 期):云服务流量有多贵?
    科技爱好者周刊(第 170 期):软件订阅制的胜利
    科技爱好者周刊(第 169 期):五菱汽车的产品设计
    在Chrome中打开网页时出现以下问题 您的连接不是私密连接 攻击者可能会试图从 x.x.x.x 窃取您的信息(例如:密码、通讯内容或信用卡信息)
    mac 更新到big sur 后,parallels虚拟机的一些问题:由于您尚未获得访问其中一些文件的授权,所以您不能恢复“Windows 10
    React/Vue 项目在 GitHub Pages 上部署时资源的路径问题
    科技爱好者周刊(第 168 期):游戏《底特律:变人》
  • 原文地址:https://www.cnblogs.com/40kuai/p/7481801.html
Copyright © 2020-2023  润新知