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, dtype=None, order='C'):创建一个元素值为1的数组。

np.empty(shape, dtype=float, order='C'):创建一个元素值未初始化的数组。

np.zeros_like(a, dtype=None, order='K', subok=True, shape=None):根据另一个数组创建一个相同维数和元素个数且元素值为0的数组。

np.ones_like(a, dtype=None, order='K', subok=True, shape=None):根据另一个数组创建一个相同维数和元素个数且元素值为1的数组。

np.random.rand(d0, d1, ..., dn):创建一个指定维数(d0, d1, ..., dn),元素为0到1之间的随机数的数组,d0的值表示这一维的元素个数。

np.random.randint(low, high=None, size=None, dtype=int):创建一个元素值为[0, low)或[low, high)之间的随机整数的数组,可用size指定数组的shape。

np.logspace(start, stop, num=50, endpoint=True, base=10.0, dtype=None, axis=0):创建一个指定范围内(base的start次幂到base的stop次幂)具有相同间隔的指定元素个数的数组。

示例:

二、数组索引和切片

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

示例:

三、数组常用方法

常用属性:

ndarray.dtype:数组元素的数据类型。

ndarray.shape:数组的维数和对应元素个数信息。

ndarray.size:数组中的元素个数。

ndarray.ndim:数组的维数。

Numpy特色操作

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

ndarray.astype(dtype, order='K', casting='unsafe', subok=True, 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=, where=True):获取数组中的最大值,也可以获取指定维度的最大值。

ndarray.min(axis=None, out=None, keepdims=False, initial=, where=True):获取数组中的最小值,也可以获取指定维度的最小值。

ndarray.mean(axis=None, dtype=None, out=None, keepdims=False):获取数组的平均值,也可以获取指定维度的平均值。

ndarray.sum(axis=None, dtype=None, out=None, keepdims=False, initial=0, where=True):获取数组的和,也可以获取指定维度的和。

ndarray.argmax(axis=None, out=None):最大值的索引。

ndarray.argmin(axis=None, out=None):最小值的索引。

ndarray.clip(min=None, max=None, out=None, **kwargs):截断操作,将数组中小于min值的元素重置为min值,大于max值的元素重置为max值。

ndarray.sort(axis=-1, kind=None, order=None):排序,也可以按照指定维度进行排序。

ndarray.argsort(axis=-1, kind=None, 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=, 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'):从文件中读取数组对象。

python第三方库numpy-Python三方库:Numpy(数组处理)相关推荐

  1. 三维点云学习(4)5-DBSCNA python 复现-3-kd-tree radius NN 三方库 scipy 与 sklearn速度比较

    三维点云学习(4)5-DBSCNA python 复现-3-kd-tree radius NN 三方库 scipy 与 sklearn速度比较 import from scipy.spatial im ...

  2. 高翔博士SLAMBOO2十二讲代码库中的三方库没有下载下来 ,需要手动对三方库单独下载的git的命令如下

    高翔博士SLAMBOO2十二讲代码库中的三方库没有下载下来 git clone --recursive https://github.com/gaoxiang12/slambook2.git 需要手动 ...

  3. Python 依赖管理及打包三方库 Poetry

    1. 简介 Poetry 是 Python 中用于依赖管理和打包的工具.它允许您声明项目所依赖的库,并将为您管理(安装/更新)它们.Poetry 提供了一个锁定文件以确保可重复安装,并且可以构建您的项 ...

  4. python 处理 Excel 模块使用三方库的对比分析(xlrd/xlwt/xlutils/openpyxl)

    xlrd- 读取 Excel 文件 xlwt- 写入 Excel 文件 xlutils - 操作 Excel 文件的实用工具,如复制.分割.筛选等(该领域的先驱) xlwt.wlrd .xlutils ...

  5. 【Python】一、Python程序运行方式

    文章目录 实验目的 一.熟悉Python的安装 二.熟悉PyCharm安装 三.启动IDLE,进入Python Shell,熟悉环境,运行教材案例:输出"hello world!" ...

  6. python第三方库numpy-Python第三方库之Numpy库

    易知大学任务(2)成绩表雷达分析图 概述 Numpy 最基本的库,是用于处理含有同种元素的多维数组运算的第三方库 -科学计算包,python数据分析及科学计算的基础库,几乎支撑所有其他库 -支持N维数 ...

  7. 断网python第三方库安装_Python离线断网情况下安装numpy、pandas和matplotlib等常用第三方包...

    联网情况下在命令终端CMD中输入"pip install numpy"即可自动安装,pandas和matplotlib同理一样方法进行自动安装. 工作的电脑不能上外网,所以不能通过 ...

  8. python第三方库numpy-谁能介绍下Python生态中的第三方库NumPy

    一.NumPy引见 1. 什么是NumPy 它是运用Python停止科学计算的根底包.它包含各种功用,包括以下重要功用:一个强大的N维数组对象 复杂的(播送)功用 用于集成C / C ++和Fortr ...

  9. python安装第三方库win10_音频处理 windows10下python三方库librosa安装教程

    librosa是处理音频库里的opencv,使用python脚本研究音频,先安装三方库librosa. 如下通过清华镜像源安装librosa: pip install -i https://pypi. ...

最新文章

  1. java jdk 8u111_8u111-jdk-alpine在java开发中的NullPointerException错误解决方案
  2. 深度学习专家Karpathy加入特斯拉,或将负责自动驾驶视觉研究
  3. 软件项目管理0831:不要自我评价过高
  4. 重磅!深入调研证券行业,神策数据发布《财富管理数字化转型现状与趋势洞察》报告...
  5. [以太坊源代码分析] I.区块和交易,合约和虚拟机
  6. 玩转oracle 11g(1):Oracle 11g的安装
  7. 计算机中¥符号按哪个键,在电脑设计中人民币¥这个符号咋弄出来
  8. coredump详解
  9. 凸优化第四章凸优化问题 4.4 二次优化问题
  10. iOS开发之App上架流程(2017)
  11. fread函数在C语言中的用法,c语言fread函数的用法
  12. 单片机课程设计——交通灯
  13. 51单片机程序下载失败原因排查
  14. html可以转为psd格式吗,网页ps模板-请问,PSD格式的网页模板应该如何导成HTML里所用的东西?现在 爱问知识人...
  15. 稀疏矩阵 存储格式 COO CSR DIA ELL HYB
  16. php7 开发框架,Lin是一套基于php7.2的全新web框架
  17. AM4379芯片的GPIO接口点灯LED
  18. Numpy简易教程7——读/写文件
  19. “b数”(B树)是个怎么回事
  20. Tensorflow 2.3 model.evaluate报错InvalidArgumentError: Incompatible shapes: [1,64] vs. [1,128]

热门文章

  1. 大数据平台安全标准设计
  2. 文本去重之MinHash算法——就是多个hash函数对items计算特征值,然后取最小的计算相似度...
  3. 开源软件架构总结之——Bash(readline做输入交互式,词法语法分析,进程交互)...
  4. Golang通道的无阻塞读写的方法示例
  5. 查看服务器上读的是哪个配置文件
  6. [洛谷P3181] [HAOI2016]找相同字符
  7. Linux(64) 下 Tomcat + java 环境搭建
  8. thymeleaf模板的使用(转)
  9. 影响架构决策的非功能性需求
  10. rgbdslam_v2安装并使用