教你十分钟学会使用numpy。

简单介绍一下numpy的话,这就是一个基于多维数组的python科学计算的核心库。

基本信息

# 一般用np作为numpy的缩写
import numpy as np # 这里创建了一个数组 之后详细说明
arr = np.array([[[1], [2]], [[3], [4]]], dtype=np.int32) # 数组的维度
arr.ndim # 数组的各个维度的长度
arr.shape # 数组元素个数
arr.size

索引对象

这里要说一个贯穿数据索引的重要概念。无论是原生的python list容器,numpy,还是之后的pandas都会用到。

在原生的python list容器中我们一般会用list[start:end:step]做列表索引,那么我们用于索引的对象就是start:end:step即切片对象(slice)。

numpy扩展了可以用于索引的对象。我们可以用任意的序列对象作为索引。比如在numpy中array[1:4]array[[1,2,3]]是等效的。但是在list容器的索引语法中,后面这种写法是非法的。

多维视图

那么上面是单个维度的索引,多维索引只要把单维的堆叠起来就行就行了。

比如arr[first_slice, second_slice, ......]

结合下面的例子来理解一下。

注意所以视图的返回都是引用

但也可也通过这种方式来返回拷贝newarr = arr[::].copy()

快速创建

我们可以用任意指定的shape来创建多维数组。shape即元组或者列表比如(3,4)就是一个3x4矩阵, [2,3,4] 就是一个2x3x4的三维张量。

# 创建一个全为1的多维数组
np.ones(shape) # 创建一个全为0的多维数组
np.zeros(shape) # 创建一个全为7的多维数组
np.full(shape,7) # 创建一个随机的数组
np.random.random(shape) # n阶单位方阵即二维多维数组
np.eye(n) # 二维数组即矩阵对角线填充
np.diag([1, 2, 3])

数组操作

# 运算操作,以加操作为例
result = a - b
result = np.add(a,b) # 跟操作符等效 # 函数操作
np.exp(arr) # e的次数
np.sqrt(arr) # 平方根
np.log(arr) # 对数
a.dot(b) # a点积b
a.T # a的转置 # 比较操作
a == b # 会返回一个由True和False构成的多维数组 # 聚合操作
arr.sum() # 求和
arr.mean() # 求均值
a.corrcoef() # 求协方差

这里有一个容易弄混在于聚合操作,arr.sum()默认是对所有的元素进行求和操作。但是其实我们还可以指定arr.sum(axis=0)对某个维度进行求和。

这里以三维张量举个例子:

>>> arr = np.ones((2,3,4))
>>> arr
array([[[ 1., 1., 1., 1.],
[ 1., 1., 1., 1.],
[ 1., 1., 1., 1.]], [[ 1., 1., 1., 1.],
[ 1., 1., 1., 1.],
[ 1., 1., 1., 1.]]])
>>> arr.sum(axis=0)
array([[ 2., 2., 2., 2.],
[ 2., 2., 2., 2.],
[ 2., 2., 2., 2.]])
>>> arr.sum(axis=1)
array([[ 3., 3., 3., 3.],
[ 3., 3., 3., 3.]])
>>> arr.sum(axis=2)
array([[ 4., 4., 4.],
[ 4., 4., 4.]])

简单来理解的话,对某个axis=n进行聚合操作的话就是把对应shape的第n个维度消去。

比如原本的shape为(2,3,4),如果指定axis=0,那么聚合操作的返回shape就是(3,4)。可以结合上面那个例子来理解。

速查表

练习

你以为你十分钟真的就学会了吗。

来做点习题吧。

100道numpy练习题

参考

scpy-note numpy

快速入门Numpy的更多相关文章

  1. numpy快速入门

    numpy快速入门 numpy是python的科学计算的核心库,很多更高层次的库都基于numpy.博主不太喜欢重量级的MATLAB,于是用numpy进行科学计算成为了不二选择. 本文主要参考Scipy ...

  2. pandas快速入门

    pandas快速入门 numpy之后让我们紧接着学习pandas.Pandas最初被作为金融数据分析工具而开发出来,后来因为其强大性以及友好性,在数据分析领域被广泛使用,下面让我们一窥究竟. 本文参考 ...

  3. 数据分析入门——numpy

    一.什么是numpy Numpy提供了一个在Python中做科学计算的基础库,重在数值计算,主要用于处理多维数组(矩阵)的库.用来存储和处理大型矩阵,比Python自身的嵌套列表结构要高效的多.本身是 ...

  4. 给深度学习入门者的Python快速教程 - numpy和Matplotlib篇

    始终无法有效把word排版好的粘贴过来,排版更佳版本请见知乎文章: https://zhuanlan.zhihu.com/p/24309547 实在搞不定博客园的排版,排版更佳的版本在: 给深度学习入 ...

  5. Jupyter Notebook 快速入门

    Jupyter Notebook(此前被称为 IPython notebook)是一个交互式笔记本,支持运行 40 多种编程语言.在本文中,我们将介绍 Jupyter notebook 的主要特性,以 ...

  6. h5py快速入门指南

    h5py是Python语言用来操作HDF5的模块.下面的文章主要介绍h5py的快速入门指南,翻译自h5py的官方文档:http://docs.h5py.org/en/latest/quick.html ...

  7. Jupyter 快速入门——写python项目博客非常有用!!!

    from:https://blog.csdn.net/m0_37338590/article/details/78862488 一.简介: Jupyter Notebook(此前被称为 IPython ...

  8. Python pandas快速入门

    Python pandas快速入门2017年03月14日 17:17:52 青盏 阅读数:14292 标签: python numpy 数据分析 更多 个人分类: machine learning 来 ...

  9. Pandas 快速入门(二)

    本文的例子需要一些特殊设置,具体可以参考 Pandas快速入门(一) 数据清理和转换 我们在进行数据处理时,拿到的数据可能不符合我们的要求.有很多种情况,包括部分数据缺失,一些数据的格式不正确,一些数 ...

随机推荐

  1. Codeforces Round #388 (Div. 2) D

    There are n people taking part in auction today. The rules of auction are classical. There were n bi ...

  2. GDB 格式化结构体输出

    转载:http://blog.csdn.net/unix21/article/details/9991925 set print addressset print address on打开地址输出,当 ...

  3. js判断网页访问设备类型

    有时候我们会需要来根据不同的设备访问进行不同的操作,在网上找了一下,主要是根据Navigator对象, if(/Android|Windows Phone|webOS|iPhone|iPod|Blac ...

  4. Java Lambda表达式 Stream

    Stream Stream不是集合元素,它不是数据结构并不保存数据,而是有关算法和计算的,更像是一个高级版本的Iterator,原始版本的Iterator,用户只能显式地一个一个遍历元素并对其进行操作 ...

  5. 1102 采药 2005年NOIP全国联赛普及组

    1102 采药 2005年NOIP全国联赛普及组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold       题目描述 Description 辰辰是个天资聪颖的孩子 ...

  6. datagrid数据网格获取所有选中行的索引,插入某个列值为其他列的运算值

    获取所有选中行的索引,存入数组ary中: var data=$("#dg").datagrid("getSelections"); var ary=[]; fo ...

  7. 深入浅出Android动态加载jar包技术

    在实际项目中,由于某些业务频繁变更而导致频繁升级客户端的弊病会造成较差的用户体验,而这也恰是Web App的优势,于是便衍生了一种思路,将核心的易于变更的业务封装在jar包里然后通过网络下载下来,再由 ...

  8. 如何使用KeyChain保存和获取UDID

    本文是iOS7系列文章第一篇文章,主要介绍使用KeyChain保存和获取APP数据,解决iOS7上获取不变UDID的问题.并给出一个获取UDID的工具类,使用方便,只需要替换两个地方即可. 一.iOS ...

  9. windows Git的安装和使用

    一.本人是根据廖雪峰大神的个人官网学习的git,并有感而发以做笔记的方式写下这篇博客,希望可以帮助到自己和其他人,廖雪峰个人官网http://www.liaoxuefeng.com/ 二.声明我的电脑 ...

  10. Linux OpenGL 实践篇-15-图像数据操作

    OpenGL图像数据操作 之前的实践中,我们在着色器中的输入输出都是比较固定的.比如在顶点或片元着色器中,顶点属性的输入和帧缓存的颜色值:虽然我们可以通过纹理或者纹理缓存对象(TBO)来读取任意的内存 ...