Loading

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
posted @ 2018-11-12 19:42  未夏  阅读(136)  评论(0编辑  收藏  举报