快速入门Numpy
教你十分钟学会使用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练习题
参考
快速入门Numpy的更多相关文章
- numpy快速入门
numpy快速入门 numpy是python的科学计算的核心库,很多更高层次的库都基于numpy.博主不太喜欢重量级的MATLAB,于是用numpy进行科学计算成为了不二选择. 本文主要参考Scipy ...
- pandas快速入门
pandas快速入门 numpy之后让我们紧接着学习pandas.Pandas最初被作为金融数据分析工具而开发出来,后来因为其强大性以及友好性,在数据分析领域被广泛使用,下面让我们一窥究竟. 本文参考 ...
- 数据分析入门——numpy
一.什么是numpy Numpy提供了一个在Python中做科学计算的基础库,重在数值计算,主要用于处理多维数组(矩阵)的库.用来存储和处理大型矩阵,比Python自身的嵌套列表结构要高效的多.本身是 ...
- 给深度学习入门者的Python快速教程 - numpy和Matplotlib篇
始终无法有效把word排版好的粘贴过来,排版更佳版本请见知乎文章: https://zhuanlan.zhihu.com/p/24309547 实在搞不定博客园的排版,排版更佳的版本在: 给深度学习入 ...
- Jupyter Notebook 快速入门
Jupyter Notebook(此前被称为 IPython notebook)是一个交互式笔记本,支持运行 40 多种编程语言.在本文中,我们将介绍 Jupyter notebook 的主要特性,以 ...
- h5py快速入门指南
h5py是Python语言用来操作HDF5的模块.下面的文章主要介绍h5py的快速入门指南,翻译自h5py的官方文档:http://docs.h5py.org/en/latest/quick.html ...
- Jupyter 快速入门——写python项目博客非常有用!!!
from:https://blog.csdn.net/m0_37338590/article/details/78862488 一.简介: Jupyter Notebook(此前被称为 IPython ...
- Python pandas快速入门
Python pandas快速入门2017年03月14日 17:17:52 青盏 阅读数:14292 标签: python numpy 数据分析 更多 个人分类: machine learning 来 ...
- Pandas 快速入门(二)
本文的例子需要一些特殊设置,具体可以参考 Pandas快速入门(一) 数据清理和转换 我们在进行数据处理时,拿到的数据可能不符合我们的要求.有很多种情况,包括部分数据缺失,一些数据的格式不正确,一些数 ...
随机推荐
- 前端开发---css样式的使用方式
css使用方式: 1.内联样式表: <body style="background-color:green" margin:0 ; padding:0;> 2.嵌入式样 ...
- Windows服务的新建,安装,卸载,调试以及调用!
一.前言: 写这篇博文之前,我正顶着压力在尝试着调试我一无所知的Windows自建服务.历经千辛万苦,找了无数零散文档拼凑关于VisualStudio2015中怎样创建和调试服务程序!最后终于调试成功 ...
- 将生成的Excel表发送到邮箱
本文接上一篇,将得到的Excel表发送到邮箱.. 在上一篇中,本人使用的是直接从数据库中获取数据,然后包装成Excel表.现在将该Excel表发送到目的邮箱,如果需要跟上篇一样,定时每天某时刻发送,就 ...
- 解决spring http输入流和输出流只能读取一次
1.需求:给某些请求接口记录日志,记录请求的数据和响应的数据和请求所花费的时间.这里采用非侵入式编程,也业务代码进行解耦.按照spring AOP 的编程思想. 2.编程设计:在spring 拦截器中 ...
- MySQL从服务配置文件
[mysql]port=3306socket=/var/lib/mysql/mysql.sockdefault-character-set = utf8mb4 [mysqld]server-id=2l ...
- openssl安装介绍
#因CentOS7默认安装了openssl1.0版本,需要删除该版本,才能安装openssl.1.0.2l版本yum remove -y openssl openssl-devel cd /usr/l ...
- 后台安装 SQL Server 无人值守 安装
(开头闲淡)项目需要必须安装SQL的,查了很久,断断续续用了各种方法,今天终于用了正确的姿(xia)势(mo)弄成了. 最开始用的方法是调用Win的API模拟鼠标操作安装的,嗯,虽然勉强可以,就是有些 ...
- Thread and Peocess
Thread and Peocess pthread_create() 原型: int pthread_create(pthread_t* thread, pthread_attr_t* attr, ...
- HDOJ4550 卡片游戏 随便销毁内存的代价就是wa//string类的一些用法
思路 标记最小的最后的位置 放在第一位 标记位置之前按left值小的左方大的右方 标记位置之后按顺序放在最后 不多说先贴上销毁内存的wa代码 销毁内存的wa代码 #include<cstdio ...
- js 前端不调接口直接下载图片
// 下载图片 downPhoto (path) { this.downloadFiles(path) }, // 下载 downloadFiles (content) { console.log(c ...