zoukankan      html  css  js  c++  java
  • Numpy笔记

    Numpy

    ndarray对象是一种由同质元素组成的多维数组。它的特点是:

    • 元素数量预先指定好
    • 同质:几乎所有元素的类型和大小都相同

    元素的类型通过ndarray.dtype获取

    ndarray.ndim描述轴的数量,即秩的大小

    ndarray.size描述数组长度

    ndarray.shape描述数组的型,轴的数量和数组长度,它的返回值是一个元组类型,有两种形式:

    • (size,)

      元组只有一个元素,表示数组轴数是1,数组长度是(size)

    • (n,size)

      (n<=2),表示数组的轴数是2;当(n > 2),表示数组的轴数是(n).数组长度是(size)

    创建ndarray对象

    1. numpy.array()
    2. numpy.arange(start,end,step=1)
    3. numpy.random.random(number) or numpy.random.random((row,col))
    4. numpy.zeros((row,col))
    5. numpy.ones((row,col))
    6. numpy.linspace(start,end,分隔区间的数量)

    基本操作

    • 算数运算符

      当矩阵和一个标量进行四则运算,会通过广播机制对每个元素进行算术运算

    • 矩阵乘法

      numpy.dot(A,B)

    索引

    索引操作获取的是数组的视图,对索引结果的修改,会影响原数组。

    • 一维数组

      ndarray[index]ndarray[[index_x,index_y,index_z,...]]

      可以索引一个元素或多个元素

    • 多维数组

      ndarray[row,col]

      索引时指定元素的行和列

    切片

    切片操作获取的是数组的视图,对索引结果的修改,会影响原数组。

    • 一维数组

      ndarray[start:end:step]

      start缺省值为0,end缺省值为数组的长度,step是可选的步长

    • 多维数组

      多维数组切片,要指明切片的范围和切片操作

      • 单行

        ndarray[row,start:end:step]

      • 连续行

        ndarray[row_start:row_end,start:end:step]

      • 不连续行

        ndarray[[row_x,row_y,...],start:end:step]

    数组拼接

    • 横向拼接

      numpy.hstack((A,B))

    • 纵向拼接

      numpy.vstack((A,B))

    • numpy.column_stack or numpy.row_stack()可以用来处理一维数组的拼接

    数组迭代

    • 推荐方法:numpy.apply_along_axis(聚合函数,*,axis,ndarray)

      axis是一个boolean值,0表示按列迭代,1表示按行迭代。

      ndarray表示要处理的数组

    • for ... in ...

    结构化数组

    结构体元素类型:

    bytes b1
    int i1,i2,i4,i8
    unsigned ints u1,u2,u4,u8
    floats f2,f4,f8
    complex c8,c16
    fixed length string a
    numpy.array([...],...,dtype=('type,type1,...'))
    

    或者

    numpy.array([...],...,dtype=[('field',type),('field',type),...])
    

    如果不指定字段标题,默认字段名为f<n>,利用字段名可以轻松的引用矩阵的某列

    数据文件读取

    numpy.save(filename,dataArray)会将数组序列化为.npy二进制文件,反序列化可以通过numpy.load(filename)

    读取文本文件

    numpy.genfromtxt(filename,delimiter=None,names=None)
    

    它接受三个参数:

    1. 存放数据的文件名
    2. 分隔符
    3. 是否含有标题

    该函数包含两层隐式循环:

    1. 第一层循环每次读取文件的一行
    2. 将每行的多个值分开,再对这些值进行转化,依次插入所建数组的相应位置。
    3. 对于缺失数据,返回nan
  • 相关阅读:
    对Warning: Attempt to present XXX on XXX whose view is not in the window hierarchy!的解决方案
    iOS开发路线简述(转)
    Xcode6为什么干掉pch(Precompile Prefix Header)&如何添加pch文件
    ToolBar中的TextField为第一响应者时不弹出键盘
    xcode6 iOS SDK 8.1隐藏系统状态栏
    UE4 材质切换(带动画效果)
    UE4 VR 模式画面扭曲 解决方法
    UE4 去除不正确的水面倒影以及不完整镜头轮廓
    UE4 VR 模式全屏 4.13
    UE4 Windows平台部署游戏到IOS 第二部分
  • 原文地址:https://www.cnblogs.com/weixia-blog/p/9948606.html
Copyright © 2011-2022 走看看