IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> Python | Numpy入门(1)_笔记 -> 正文阅读

[Python知识库]Python | Numpy入门(1)_笔记

Python学习(1)

知识点1

  1. 列表、集合、数组类型表示数据
  2. 列表中每一个数据的数据类型可以存在不同。数组要求每一个元素的类型是相同的
  3. 二维数据是一维数据组合形式
  4. 表格是典型的二维数据
  5. 高维数据是通过最基本的二元关系表示数据间的复杂结构

知识点2
6. 一维数据可以使用列表(有序)和集合类型(无序)

  1. 二维和多维数据用列表类型(多维列表代表多维数据)

  2. 高维数据用字典或者数据表示格式:

    dict={
    
    "A"="aa"
    
    }
    

Numpy简介

  1. 表示n维数组对象:ndarray

  2. 线性代数、傅里叶变换、随机数生成

  3. 引用:import numpy as np

  4. 例子:计算 A 2 + B 3 A^2+B^3 A2+B3,其中 A A A B B B是一维数组

    #普通写法
    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())
        
    
    #使用numpy计算
    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())
    
    1. 提供数组对象提高计算速度(底层C语言)
    2. 科学计算中,一个维度所有的数据的数据类型往往是相同的。(数组对象采用相同的数据类型更好)
    3. ndarray是一个多维数组对象,包括实际的数据描述这些数据的元数据(维度、类型等)。要求类型相同下标从0开始
    4. np.array()输出为[],元素由空格分开。
    5. 轴(维度)和秩(.ndim)(维度的数量)、ndarray对象的尺度(.shape)(如矩阵,n行m列)、元素个数(.size)(如上述n*m)、ndarray对象的元素类型(.dtype)、ndarray对象中每个元素的大小(.itemsize)(以字节为单位,方便计算ndarray占用的内存空间)
    a=np.array([[0,1,2,3,4],
              [9,8,7,6,5]])
    a.ndim
    >2
    #代表有两维
    
    a.shape
    >(2,5)
    #代表是2行5列
    
    a.dtype
    >'int 32'
    #是ndarray自定义的类型
    
    a.itemsize
    >4
    
    
    1. python仅支持整数、浮点数和复数三种类型。
    2. ndarray也可以由非同质对象构成,非同质ndarray认为每一个不同类型的元素都是一个对象,都是对象类型‘o’,无法发挥使用numpy优势,需要避免使用。(同质即本质相同,非同质则不同,此处应该指的是类型不同)。

    创建ndarray数组

    1. 从python的列表、元组。
    #从列表或者元组创建ndarray(列表是[],元组是(),列表可以更改而元组不可更改)
    x=np.array(list/tuple)
    
    #用dtype指定元素类型
    x=np.array(list/tuple,dtype=np.float32)
    
    #不指定dtype时会自动根据数据创建相关度最高的类型定义
    
    1. 从numpy中的函数创建。(如arange、ones、zeros等)
    np.arange(n)
    #返回ndarray类型,元素从0到n-1(不指定为整数类型)
    
    np.ones(shape)
    #根据shape生成一个全1数组,shape为元组类型。eg:生成一个两行三列的数组,shape:(2,3),(不指定为浮点数类型),shape从左到右是最外层到最内层的。
        
    np.zeros(shape)
    #同理,(不指定为浮点数类型)
    
    np.full(shape,val)
    #根据shape生成一个数组,每个值都是val,(不指定为浮点数类型)
    
    np.eye(n)
    #创建一个n*n的矩阵,对角线为1,其余均为0(正定矩阵),(不指定为浮点数类型)
    
    np.ones_like(a)
    #根据数组a的形状生成全1数组
    
    np.zeros_like(a)
    np.full_like(a,val)
    #同理
    
    np.linspace()
    #eg:
        a=np.linspace(1,10,4)//1代表起始位置,第二个参数是最后一个元素的值,4代表共有四个元素。
        >a=([1.,4.,7.,10.])
        b=np.linspace(1,10,4,endpoint=False)//置为False时不作为最后一个值出现。
        >b=([1.,3.25,5.5,7.75])
        
    np.concatenate()
    #将两个或者多个数组合并为新的数组
    
    1. 从字节流(raw bytes)中创建。
    2. 从文件中读取特定的格式,创建ndarray数组。
    3. 创建后的ndarray数组可以进行维度和元素变换
    a.reshape(shape)
    #不改变数组元素,返回一个shape形状的数组,原数组不变。
    
    a.resize(shape)
    #和reshape一致,但是是直接修改原数组
    
    a.swapaxes(ax1,ax2)
    #将数组中n个维度中两个维度进行调换
    
    a.flatten
    #对数组进行降维,返回折叠后的一维数组,而原数组不变。
    
    new_a=a.astype(new_type)
    #返回一个新的数组
    
    b=a.tolist()
    #从数组转换为列表
    #由于列表是最原始的数据类型,比numpy慢很多,但是适合于原生程序计算。
    
    #eg:
    
    a=np.ones((2,3,4),dtype=np.int32)
    #不写32也可以,会自动判断是int64还是int32
    
    a.reshape((3,8))
    #需要保证两边总数一样,如3*8=2*3*4
    
    b=a.astype(np.float)#float同理
    >b
    #会生成一个浮点型的数组
    #这里astype一定会生成一个新的数组(原来版本的copy)
    

    数组的索引和切片

    1. 索引是获取数组中特定位置元素的过程

      a=np.array([9,8,7,6,5])
      
      #索引,从0开始
      a[2]
      
    2. 切片是获取数组中元素子集的过程(在数组中找到一组数据)

      a=np.array([9,8,7,6,5])
      
      a[1:4:2]
      #第一个元素为开始的编号,第二个为终止的编号(索引中无终止编号),第三个元素为步长,即从1到4步长为2的元素,如1、3,对应为8、6,此命令得到的切片为[8,6]
      
    3. 多维数组的索引:

      a=np.arange(24).reshape((2,3,4))
      #生成一个维度为(2,3,4),从0开始到23的一个数组
      
      a
      >([[[0,1,2,3],
      	[4,5,6,7],
      	[8,9,10,11]],
      	
      	[[12,13,14,15],
      	[16,17,18,19],
      	[20,21,22,23]]])
      
      a[1,2,3]
      >23
      
      a[-1,-2,-3]
      >17
      #-1表示数组最后一个元素值,-2表示倒数第二个,-3表示倒数第三个
      
    4. 多维数组的切片:

      a[:1,-3]
      >[5,17]
      #选取一个维度用:,此处表示不论维度是哪一个(即第一个维度都要),然后取满足第二个维度的1和第三个维度的-3的那个值(有几个第一维就有几个值)。
      
      a[:,1:3,:]
      >{[[4,5,6,7],[8,9,10,11]],[[16,17,18,19],[20,21,22,23]]}
      #第一个和第三个个维度遍历,取第二个维度的1~3个。
      
      a[:,:,::2]
      >[[[0,2],
        [4,6],
        [8,10]],
       [[12,14],
       [16,18],
       [20,22]]]
      #通过步长进行切片,从第一个元素开始算起
      

      数组的运算

      1. 数组与标量之间的运算:数组中每一个元素都要与标量进行计算。
    #此处a与前同:
    
    a.mean()
    >11.5
    #取均值使其变成标量
    
    a=a/a.mean()
    a
    >三层数组
    #每一个值都除了
    
    1. 数组的计算公式:
    #这里x为数组。且运算时数组本身不发生变化,而是copy了一个运算版本。
    
    np.abs(x)、np.fabs(x)
    #计算数组各元素的绝对值
    
    np.sqrt(x)
    #计算数组各元素的平方根
    
    np.square(x)
    #计算数组各元素的平方
    
    np.log(x)、np.log10(x)、np.log2(x)
    #计算数组各元素的自然对数、以10为底的对数和2为底的对数
    
    np.ceil(x)、np.floor(x)
    #计算数组各元素的ceiling(不超过元素的整数值)值或floor(小于这个元素的最大整数值)值
    
    np.rint(x)
    #计算数组的各元素的四舍五入值
    
    np.modf(x)
    #将数组各元素的小数和整数部分以两个独立数组形式返回
    
    np.cos(x)、np.cosh(x)、np.sin(x)、np.sinh(x)、np.tan(x)、np.tanh(x)
    #计算数组各元素的普通和双曲三角函数
    
    np.exp(x)
    #计算数组的各元素的指数值
    
    np.sign(x)
    #计算数组各元素的符号值,即当值为正数时返回1,负数返回-1,0即返回0。
    

    3.numpy的二元函数:

    +-*/**
    #加、减、乘、除、乘方(均是两个数组各元素对应运算)
    
    np.maximum(x,y)、np.fmax()
    #返回元素的最大值(本质是一个运算,当数据类型不同的时候会生成浮点数)
    
    np.minimum(x,y)、np.fmin()
    #返回元素的最小值(本质是一个运算,当数据类型不同的时候会生成浮点数)
    
    np.mod(x,y)
    #对元素级进行模运算
    
    np.copysign(x,y)
    #将数组y中各元素的元素值的符号赋值给数组x对应的元素
    
    ><>==<==!=
    #算术比较且产生一个布尔型的数组(相同规模但是由TRUE和FALSE构成)
    

karency_2021.10.10
源:北京理工大学嵩天

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-10-11 17:28:47  更:2021-10-11 17:31:02 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/28 21:09:19-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计