什么是NumPy

NumPy是Python科学计算的基础包,不仅是python中使用最多的第三方库,还是SciPy、Pandas等数据科学的基础库。所提供的结构比Python自身的更高级、更高效。

可以说,NumPy所提供的数据结果是Python数据分析的基础。

标准的Python用列表list保存数组的值,list的元素在系统中内存是分散存储的,而Numpy的数组结构是存储在一个均匀连续的内存块中,遍历所有的元素更高效,节省了计算资源。

主要提供了以下功能:

  • 快速高效的多维数组对象的ndarray
  • 用于对数组执行元素级计算以及直接对数组执行数学运算的函数
  • 用于读写硬盘上基于数组的数据集的工具
  • 线性代数运算、傅立叶变换,以及随机数组生成
  • 用于将C、C++、Fortran代码集成到Python的工具
  • 作为算法之间传递数据的容器,对于数值型数据,Numpy数组在存储和处理数据时要比内置的Python数据结构高效得多

numpy提供了一个ndarray对象,多维数组的含义,维度称为rank(秩),每个线性的数组称为一个axes(轴)。数组是有属性的,可以通过函数shape获得数组的大小,通过dtype获得元素的属性

相关帮助文档

一、如何创建数组

  • array

    将输入数据(列表、元组、数组或其他序列类型)转换为ndarray。要么推断出dtype,要么显示指定dtype

  • asarray

    将输入转换为ndarray,如果输入本身就是一个ndarray就不再复制

    array和asarray都可以将结构数据转化为ndarray,但是主要区别就是当数据源是ndarray时,array仍然会copy出一个副本,占用新的内存,但asarray不会

  • arange

    类似内置的range,返回一个ndarray

  • linespace

    生成等差数列,可以指定包含名都不包含终点值

  • zeros、zeros_like

    根据指定的形状和dtype创建一个全是0的数组。

    zeros_like以另一个数组为参数,并根据其形状和dtype创建一个全0数组

  • ones、ones_like

    根据指定的形状和dtype创建一个全是1的数组。

    ones_like以另一个数组为参数,并根据其形状和dtype创建一个全1数组

  • empty、empty_like

    类似ones和ones_like,只是产生的是全0数组

  • eye、identity

    创建一个正方的N*N单位矩阵,对角线为1,其余为0

二、如何访问数组

  • 下标索引

    arr2d=np.array([[1,2,3],[4,5,6],[7,8,9]])

    arr2d[0][2]和arr2d[0,2]是等价的

  • 切片索引

    可以一次传入多个切片,

    arr2d[:2, 1:]

  • 布尔型索引

将data中所有负值都设置为0

data[data < 0] = 0
  • 选出所有名字为“cqh”的所有行
data[names == 'cqh']
  • 整数索引

    利用整数数组进行索引
arr = np.empty((8,4))
for i in range(8):
arr[i] = i
传入指定顺序
arr[[4,3,0,6]]
* 负数索引
arr[[-3,-5,-7]]
  • 方形索引

    使用np.ix_方法,可以将两个一维整数数组转换为一个用于选取方形区域的索引
arr = np.arange(32).reshape((8,4))

获取行[1,5,7,2],列[0,3,1,2],为

arr[np.ix_([1,5,7,2],[0,3,1,2])]

相当于执行了

arr[[1,5,7,2]][:,[0,3,1,2]]

错误方法:

arr[[1,5,7,2],[0,3,1,2]]

三、如何做算数运算

x1 = np.arange(1,11,2)
x2 = np.linspace(1,9,5)
np.add(x1, x2)
np.subtract(x1, x2)
np.multiply(x1, x2)
np.divide(x1, x2)
np.power(x1, x2)
np.remainder(x1, x2)

四、如何使用统计函数

默认axis=0代表沿着列统计,axis=1代表沿着行统计

  • amax:矩阵中的最大值
  • amin:矩阵中的最小值
  • ptp:统计最大值与最小值的差
  • percentile:统计数组的百分位数
  • median:统计中位数
  • mean:平均数
  • average:加权平均值(需要传入各个元素的权重)
  • std:标准差
  • var:方差

五、如何转置数组和反转

  • reshape
arr = np.arange(15).reshape((3,5))

  • T
arr.T

六、如何去重、计算差集并集等集合操作

  • unique(x):计算x中的唯一元素,并返回有序结果
  • intersect1d(x,y):计算x和y中的公共元素,并返回有序结果
  • union(x,y):计算x和y的并集,并返回有序结果
  • in1d(x,y):得到一个表示“x的元素是否包含在y”的布尔型数组
  • setdiff1d(x,y) 集合的差,元素在x中且不在y中
  • setxor1d(x,y) 集合的对称差,存在于一个数组中但不同时存在两个数组中的元素

七、如何生成随机数

  • rand:产生[0,1]均匀分布的样本值

  • uniform:产生在[0,1]中均匀分页的样本值

  • randn:产生正态分布(平均值0,标准差1)的样本值,类似MATLAB接口

  • normal:生成标准正态分布的样本数组

  • randint:在给定的上下限范围内随机选取整数

  • seed:确定随机数生成器的种子

  • permutation:返回一个序列的随机排列

  • shuffle:对一个序列就地随机排列

  • bionmial:产生二项分布的样本值

  • beta:生产Beta分布的样本值

  • chisquare:产生卡方分布的样本值

  • gamma:产生Gamma分布的样本值

八、如何输入输出文件

以二进制格式保存到磁盘

  • np.save:保存到磁盘
  • np.savez:将多个数组保存到一个压缩文件中,加载时得到一个字典对象
  • np.load:从磁盘加载

存取文本文件

  • loadtxt:指定各种分隔符
  • savetxt:将数组写到以某种分隔符隔开的文本文件

Numpy科学计算从放弃到入门的更多相关文章

  1. python安装numpy科学计算模块

    解决两个问题: (1)Import Error: No module named numpy (2)Python version 2.7 required, which was not found i ...

  2. numpy科学计算库的基础用法,完美抽象多维数组(原创)

    #起别名避免重名 import numpy as np #小技巧:print从外往内看==shape从左往右看 if __name__ == "__main__": print(' ...

  3. Python的工具包[0] -> numpy科学计算 -> numpy 库及使用总结

    NumPy 目录 关于 numpy numpy 库 numpy 基本操作 numpy 复制操作 numpy 计算 numpy 常用函数 1 关于numpy / About numpy NumPy系统是 ...

  4. Numpy科学计算

    NumPy介绍   NumPy(Numerical Python)是一个开源的Python科学计算库,用于快速处理任意维度的数组. NumPy支持常见的数组和矩阵操作.对于同样的数值计算任务,使用Nu ...

  5. python学习笔记(2):科学计算及数据可视化入门

    一.NumPy 1.NumPy:Numberical Python 2.高性能科学计算和数据分析的基础包 3.ndarray,多维数组(矩阵),具有矢量运算的能力,快速.节省空间 (1)ndarray ...

  6. python numpy 科学计算通用函数汇总

    import numpy as np #一元函数 #绝对值计算 a = -1b = abs(a)print(b)输出: 1 #开平方计算 a = 4b = np.sqrt(a)print(b)输出: ...

  7. Numpy科学计算工具

    Numpy初探 Numpy基础数据结构 Numpy数组是一个多维数组,称为ndarray.其由两部分组成: 实际的数据 描述这些数据的原数据 导入该库: import numpy as np 多维数组 ...

  8. python numpy科学计算和数据分析的基础包

    import numpy as np #创建ndarray# data1 = [6, 5, 7, 1, 3]# arrl = np.array(data1)# print(arrl)#多维列表创建nd ...

  9. 科学计算三维可视化---Mayavi入门(Mayavi库的基本元素和绘图实例)

    一:Mayavi库的基本元素 .处理图形可视化和图形操作的mlab模块 .操作管线对象,窗口对象的api (一)mlab模块 (二)mayavi的api 二:快速绘图实例 (一)mlab.mesh的使 ...

随机推荐

  1. 【HTML/CSS】置换元素

    置换元素: 一个内容不受CSS视觉格式化模型控制,CSS渲染模型并不考虑对此内容的渲染,且元素本身一般拥有固有尺寸(宽度,高度,宽高比)的元素,被称之为置换元素. 行内级置换和非置换元素的宽度定义 对 ...

  2. Linux 内核提交和控制一个 urb

    当驱动有数据发送到 USB 设备(如同在驱动的 write 函数中发生的), 一个 urb 必须被 分配来传送数据到设备. urb = usb_alloc_urb(0, GFP_KERNEL); if ...

  3. Python2_实现文件中特定内容的获取

    ===================================================== 参考链接 Python 文本文件内容批量抽取:https://blog.csdn.net/q ...

  4. Vijos1788 第K大 [模拟]

    1.题意:给定N个数字,和一个值K,要求输出一组数据中第K大的数字,其中30%的测试点满足:n <= 100;60%的测试点满足:n <= 1000;100%的测试点满足:n <= ...

  5. 虚拟机中linux系统无法打开原保存的显示器配置解决方法

    刚刚学习Linux,于是在虚拟机上装了一个redhat,有一次关机的时候,很长一段时间都没有关闭,似乎是死机了,于是我就用任务管理器给强制关闭了.然后再次开启系统就出现了这个问题,如下图所示: 当时我 ...

  6. 第二阶段:2.商业需求文档MRD:5.MRD-Roadmap及规划

    产品路线图可以用泳道图来实现.将之前做过的泳道图的角色换为阶段即可. 可以以月为单位.左边就是一些产品的功能. 基础功能,有的功能会跨月甚至夸功能模块.比如图中的会员等级. 通过线段来联系各个功能与先 ...

  7. Linux忘记root密码后如何在grub界面中以单用户模式进入系统并重置密码的方法

    本文将介绍在Linux系统中忘记root用户密码的情况下,如何在gurb界面进入单用户模式并重置root用户密码.在单用户模式下,用户不需要输入任何密码即可进入系统并可以修改密码.实验步骤如下: 1. ...

  8. 超详细!如何利用Huginn制作专属RSS

    前言 本文首发于个人网站,欢迎订阅.本篇博文接上利用Feed43为网站自制RSS源,上一篇讲解了RSS的简介以及利用Feed43自制专属RSS,Feed43有其优势,缺陷也很明显,不能高度自定义.有的 ...

  9. tomcat+jdk安装部署

    安装tomcat tar zxf jdk-8u66-linux-x64.tar.gz mkdir /application/java/ -p mv /home/oldboy/tools/jdk1.8. ...

  10. appium整个环境安装详细教程(重要)

    环境依赖 Node.js Appium Appium-desktop Appium-doctor Appium-Python-Client Python JDK Andriod SDK 以上所需的软件 ...