加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

Python三方库:Numpy(数组处理)

发布时间:2020-12-20 10:06:38 所属栏目:Python 来源:网络整理
导读:Numpy是Python中用于处理数组的一个非常强大的库,同时也是Pandas等数据处理的库的核心,如果你有大量处理数组类型数据的操作,比如操作CSV文件数据或涉及数组的科学计算等,那么Numpy是一个非常好的选择。 注: 此笔记中主要是以一维数组和二维数组作为示例

Numpy是Python中用于处理数组的一个非常强大的库,同时也是Pandas等数据处理的库的核心,如果你有大量处理数组类型数据的操作,比如操作CSV文件数据或涉及数组的科学计算等,那么Numpy是一个非常好的选择。

注:此笔记中主要是以一维数组和二维数组作为示例,更高维的数组因为用的较少,同时原理和二维数组也相似,即数组中再套数组,所以就不再单独解释了。为了简化表示,文中的np表示Numpy,即import numpy as np。

?

一、创建数组(ndarray)

Numpy中的数组对象类型为ndarray,数组的创建,最基础的就是使用np.array()方法创建数组了,传入对应的列表或元组即可,创建时也可使用dtype参数指定元素的数据类型。在使用array方法创建数组时,数组中的元素必须是同一类型,如果不是,则会发生自动类型转换,如果不想进行自动转换,可指定数据类型为object,具体见示例代码。

其他还有一些用于创建特定类型数组的方法,常用的有:

  • np.arange([start,]stop,[step,]dtype=None):相当于Python中range函数,创建一个指定范围[0,start)或[start,stop)的连续的(具有相同间隔step)的数组。
  • np.linspace(start,stop,num=50,endpoint=True,retstep=False,dtype=None,axis=0):创建一个指定范围内具有相同间隔的指定元素个数的数组,注意,这个方法不用指定间隔,而是根据元素个数自动判断间隔。
  • np.zeros(shape,dtype=float,order='C'):创建一个元素值为0的数组。
  • np.ones(shape,order='C'):创建一个元素值为1的数组。
  • np.empty(shape,order='C'):创建一个元素值未初始化的数组。
  • np.zeros_like(a,order='K',subok=True,shape=None):根据另一个数组创建一个相同维数和元素个数且元素值为0的数组。
  • np.ones_like(a,shape=None):根据另一个数组创建一个相同维数和元素个数且元素值为1的数组。
  • np.random.rand(d0,d1,...,dn):创建一个指定维数(d0,dn),元素为0到1之间的随机数的数组,d0的值表示这一维的元素个数。
  • np.random.randint(low,high=None,size=None,dtype=int):创建一个元素值为[0,low)或[low,high)之间的随机整数的数组,可用size指定数组的shape。
  • np.logspace(start,base=10.0,axis=0):创建一个指定范围内(base的start次幂到base的stop次幂)具有相同间隔的指定元素个数的数组。

示例:

?

二、数组索引和切片

Numpy中数组的索引和切片的使用形如[d0,...]的方式,其中使用逗号分隔每一维的索引和切片表示,而每一维的索引和切片表示又是与Python中列表的使用是一致的,所以对于一位数组的索引和切片直接就和Python的列表使用是一样的了,这里也不再展示示例代码了,重点在于二维及多位数组的索引和切片使用。

示例:

?

三、数组常用方法

常用属性:

  • ndarray.dtype:数组元素的数据类型。
  • ndarray.shape:数组的维数和对应元素个数信息。
  • ndarray.size:数组中的元素个数。
  • ndarray.ndim:数组的维数。

Numpy特色操作

常用方法(大多adarray方法都能在numpy下直接找到并使用):

  • ndarray.astype(dtype,casting='unsafe',copy=True):将数组中元素的数据类型转换为指定的类型。
  • ndarray.fill(value):将数组中的元素填充为指定的值。
  • ndarray.flatten(order='C'):将数组“拉直”,变为一维数组,返回的是一个新的数组。
  • ndarray.ravel([order]):也是将数组“拉直”,变为一维数组,但返回的是原数组的一个视图索引,即对这个一维数组的修改会同步到原数组。
  • ndarray.reshape(shape,order='C'):重新定义数组的shape。
  • ndarray.transpose(*axes):对数组进行“翻转”。
  • ndarray.T:相当于ndarray.transpose()。
  • ndarray.round(decimals=0,out=None):以“四舍五入”的方式对数组元素进行取整,decimals参数可以指定小数位数。
  • ndarray.max(axis=None,out=None,keepdims=False,initial=<no value>,where=True):获取数组中的最大值,也可以获取指定维度的最大值。
  • ndarray.min(axis=None,where=True):获取数组中的最小值,也可以获取指定维度的最小值。
  • ndarray.mean(axis=None,keepdims=False):获取数组的平均值,也可以获取指定维度的平均值。
  • ndarray.sum(axis=None,initial=0,where=True):获取数组的和,也可以获取指定维度的和。
  • ndarray.argmax(axis=None,out=None):最大值的索引。
  • ndarray.argmin(axis=None,out=None):最小值的索引。
  • ndarray.clip(min=None,max=None,**kwargs):截断操作,将数组中小于min值的元素重置为min值,大于max值的元素重置为max值。
  • ndarray.sort(axis=-1,kind=None,order=None):排序,也可以按照指定维度进行排序。
  • ndarray.argsort(axis=-1,order=None):返回排序之后的元素索引。
  • numpy.vstack(tup):纵向连接数组。
  • numpy.hstack(tup):横向连接数组。
  • numpy.where(condition[,x,y]):根据条件过滤数组。

示例:

?

四、文件读写

文本文件的读写可以使用以下两个方法:

  • numpy.savetxt(fname,X,fmt='%.18e',delimiter=' ',newline='n',header='',footer='',comments='# ',encoding=None):将一个数组保存到指定的文本文件中。fname为文件名称,X表示数组,fmt表示数据格式(以%表示的字符串格式化),delimiter为分隔符,其他参数也都是见名知意,看着使用就可以了。
  • numpy.loadtxt(fname,dtype=<class 'float'>,comments='#',delimiter=None,converters=None,skiprows=0,usecols=None,unpack=False,ndmin=0,encoding='bytes',max_rows=None):将文本文件中的数据加载到数组当中。

类似于数据的序列化和反序列化,可以将数组对象保存到文件中,然后加载出来后直接就是原先的数组对象:

  • numpy.save(file,arr,allow_pickle=True,fix_imports=True):将数对象组保存到指定文件中。
  • numpy.load(file,mmap_mode=None,allow_pickle=False,fix_imports=True,encoding='ASCII'):从文件中读取数组对象。

?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读