zoukankan      html  css  js  c++  java
  • Python——NumPy库入门

    1、数据的纬度

    维度:一组数据的组织形式

    1.1 一维数据

    一维数据由对等关系的有序或无序数据构成,采用线性方式组织 ,对应列表、数组和集合等概念 

    列表:数据类型可以不同 ,如 3.1413, 'pi', 3.1404, [3.1401, 3.1349], '3.1376' 

    数组:数据类型相同 。如:3.1413, 3.1398, 3.1404, 3.1401, 3.1349, 3.1376 

    1.2 二维数据

    二维数据由多个一维数据构成,是一维数据的组合形式。表格是典型的二维数据其中,表头是二维数据的一部分 。

    1.3 多维数据

    多维数据由一维或二维数据在新维度上扩展形成

    1.4 高维数据

    高维数据仅利用最基本的二元关系展示数据间的复杂结构

     

     

    2、NumPy的数组对象:ndarray

    NumPy是一个开源的Python科学计算基础库,包含:

    一个强大的N维数组对象 ndarray 

    广播功能函数

    整合C/C++/Fortran代码的工具

    线性代数、傅里叶变换、随机数生成等功能

    NumPySciPyPandas等数据处理或科学计算库的基础

    2.1 NumPy的引用

     

    2.2 N维数组对象:ndarray

    例:计算 A2+B3,其中,AB是一维数组 。

    def pysum():
            a=[0,1,2,3,4]
            b=[9,8,7,6,5]
            c=[]
            for i in range(len(a)):
                    c.append(a[i]**2+b[i]**3)
    
            return c
    print(pysum())
    

    利用python 已有的列表类型和循环的方法可以求出结果,但是程序繁琐。

    >>> print (npsum())
    None
    >>> import numpy as np
    >>> def npsum():
    	a=np.array([0,1,2,3,4])
    	b=np.array([9,8,7,6,5])
    	c=a**2+b**3
    	return c
    >>> print(npsum())
    [729 513 347 225 141]
    

    利用numpy方式编程,可以看出,并没有使用循环,更简洁。

    2.2.1  

     数组对象可以去掉元素间运算所需的循环,使一维向量更像单个数据

    设置专门的数组对象,经过优化,可以提升这类应用的运算速度

    观察:科学计算中,一个维度所有数据的类型往往相同

    数组对象采用相同的数据类型,有助于节省运算和存储空间

     

    ndarray是一个多维数组对象,由两部分构成:

    实际的数据

    描述这些数据的元数据(数据维度、数据类型等)ndarray数组一般要求所有元素类型相同(同质),数组下标从0开始 

    2.2.2

    np.array()输出成[]形式,元素由空格分割 。

    8位(0或者1)组成一个字节。

    2.3 

    2.3.1ndarray数组的元素类型

    对比:Python语法仅支持整数、浮点数和复数3种类型

    科学计算涉及数据较多,对存储和性能都有较高要求

    对元素类型精细定义,有助于NumPy合理使用存储空间并优化性能

    对元素类型精细定义,有助于程序员对程序规模有合理评估

    2.3.2

    非同质的ndarray

    非同质ndarray对象无法有效发挥NumPy优势,尽量避免使用

    2.4 ndarray数组的创建

    创建方法

    Python中的列表、元组等类型创建ndarray数组

    使用NumPy中函数创建ndarray数组,如:arange, ones, zeros

    从字节流(raw bytes)中创建ndarray数组

    从文件中读取特定格式,创建ndarray数组 

    2.4.1 Python中的列表、元组等类型创建ndarray数组

    x = np.array(list/tuple)

    x = np.array(list/tuple, dtype=np.float32)

     

    2.4.2  使用NumPy中函数创建ndarray数组,如:arange, ones, zeros

     

     

     2.5 ndarray数组的变换

    2.5.1 纬度的变换

    a并没有发生变化

    a发生改变

    输出一维,但是a并没有发生变化

    2.5.2 ndarray数组的类型变换

    new_a = a.astype(new_type)

    2.5.3 ndarray数组向列表的转换

     ls = a.tolist()

     

    2.6 ndarray数组的操作

    数组的索引和切片

    索引:找到特定位置的数据

    切片:找到特定位置的一组数据

    一维数组的索引和切片:与Python的列表类似

     

    多维数组的索引:

    多维数组的切片:

     2.7 ndarray数组的运算

     2.7.1 数组与标量之间的运算

    2.7.2 NumPy一元函数

     2.7.3NumPy二元函数

     

     

     

     

  • 相关阅读:
    atitit.为什么java体系开发效率这样低的原因and解决
    使用11g DNFS建立基于DNFS的tablespace
    MalformedObjectNameException: Invalid character '' in value part of property
    Spring MVC DispatcherServlet绑定多种URL
    chrome与pdf的事情
    JSP获取绝对物理地址
    spring mvc 与 jasper Report集成
    HttpServletRequest和ServletRequest的区别
    aJax请求结果中包含form的问题
    javascript与java编码互转
  • 原文地址:https://www.cnblogs.com/ruo-li-suo-yi/p/7711285.html
Copyright © 2011-2022 走看看