NumPy个人学习笔记【持续更新】

来源:快速入门教程 - NumPy中文文档

目录

基础知识

数组的创建

打印数组

基本操作

通用函数

索引、切片和迭代

形状操作

更改数组的形状

将不同数组堆叠在一起

将一个数组分成几个较小的数组

复制和视图

完全不复制

视图或浅复制

深拷贝

函数和方法概述

Less基础

广播规则

索引技巧


基础知识

NumPy的主要对象是同类型的多维数组。在NumPy中,维度称为轴。轴的数目为rank。

它是一张表,所有元素(通常是数字)的类型都相同,并通过正整数元组索引。

NumPy的数组类被称为ndarray。别名为 array

ndarray.ndim:数组的轴(维度)的个数。

ndarray.shape:数组的维度。

ndarray.size:数组元素的总数。

ndarray.dtype:一个描述数组中元素类型的对象。

ndarray.itemsize:数组中每个元素的字节大小。

ndarray.data:该缓冲区包含数组的实际元素。

数组的创建

一个常见的错误在于使用多个数值参数调用 array 函数,而不是提供一个数字列表(List)作为参数。

array 将序列的序列转换成二维数组,将序列的序列的序列转换成三维数组,等等。

函数 zeros 创建一个由0组成的数组,函数 ones 创建一个由1数组的数组,函数 empty 内容是随机的并且取决于存储器的状态。默认情况下,创建的数组的dtype是 float64

要创建数字序列,NumPy提供了一个arange的函数,该函数返回数组而不是列表。

arange 与浮点参数一起使用时,由于浮点数的精度是有限的,通常不可能预测获得的元素数量。出于这个原因,通常最好使用函数 linspace ,它接收我们想要的元素数量而不是把长作为参数。

例:np.linspace(0,2,9) #9个从0到2的数字

打印数组

  • 最后一个轴从左到右打印,

  • 倒数第二个从上到下打印,

  • 其余的也从上到下打印,每个切片与下一个用空行分开。

一维数组被打印为行、二维为矩阵和三维为矩阵列表。

如果数组太大而无法打印,NumPy将自动跳过数组的中心部分并仅打印角点...

要禁用此行为并强制NumPy打印整个数组,你可以使用 set_printoptions 更改打印选项。

例:np.set_printoptions(threshold=np.nan)

基本操作

与许多矩阵语言不同,乘法运算符 * 的运算在NumPy数组中是元素级别的。矩阵乘积可以使用 dot 函数或方法执行

某些操作(例如+=和*=)适用于修改现有数组,而不是创建新数组。

当使用不同类型的数组操作时,结果数组的类型对应于更一般或更精确的数组(称为向上转换的行为)。

通过指定 axis 参数,你可以沿着数组的指定轴应用操作

axis=0 对列操作 axis=1对行操作

通用函数

NumPy提供了常见的数学函数,如sin,cos和exp。In NumPy, these are called “universal functions”( ufunc ). 在NumPy中,这些函数在数组上按元素级别操作,产生一个数组作为输出。

NumPy提供了常见的数学函数,如sin,cos和exp。

在NumPy中,这些函数在数组上按元素级别操作,产生一个数组作为输出。

索引、切片和迭代

一维数组可以被索引,切片和迭代。

多维数组每个轴可以有一个索引。

当提供比轴数更少的索引时,缺失的索引被认为是一个完整切片

例:

 b
array([[ 0,  1,  2,  3],[10, 11, 12, 13],[20, 21, 22, 23],[30, 31, 32, 33],[40, 41, 42, 43]])
b[-1]                                # 相当于b[-1,:]
array([40, 41, 42, 43])

三个点( ... )表示产生完整索引元组所需的冒号。例如,如果 x 是rank为的5数组(即,它具有5个轴),则

  • x[1,2,...] 等于 x[1,2,:,:,:]

  • x[...,3] 等效于 x[:,:,:,:,3]

  • x[4,...,5,:] 等效于 x[4,:,:,5,:]

迭代 多维数组是相对于第一个轴完成的。

如果想要对数组中的每个元素执行操作,可以使用 flat 属性,该属性是数组中所有元素的迭代器。

形状操作

更改数组的形状

修改数组形状的命令:

a.ravel() #返回数组,变成一行

a.reshape(x,y) #返回一个x*y型的数组

a.T #返回转置数组

ndarray.resize 方法修改数组本身

将不同数组堆叠在一起

np.vstack((a,b))           #垂直堆叠
np.hstack((a,b))           #水平堆叠

函数 column_stack 将1D数组作为列叠加到2D数组中。

对于任何输入数组,函数 row_stack 相当于 vstack。一般来说,对于具有两个以上维度的数组,hstack 沿第二轴堆叠,vstack 沿第一轴堆叠,concatenate 允许一个可选参数,给出串接应该发生的轴。

r_c_ 可用于通过沿一个轴叠加数字来创建数组。它们允许使用范围字面量(“:”)

将一个数组分成几个较小的数组

使用 hsplit ,可以沿其水平轴拆分数组,通过指定要返回的均匀划分的数组数量,或通过指定要在其后进行划分的列

np.hsplit(a,3)   # 把a分成三组
 np.hsplit(a,(3,4))   # 把a从第3,4列开始拆分

复制和视图

完全不复制

简单赋值

函数调用

视图或浅复制

不同的数组对象可以共享相同的数据。 view 方法创建一个新的数组对象,它查看相同的数据。

对数组切片返回一个视图:

>>> s = a[ : , 1:3]     # spaces added for clarity; could also be written "s = a[:,1:3]"
>>> s[:] = 10           # s[:] is a view of s. Note the difference between s=10 and s[:]=10
>>> a
array([[   0,   10,   10,    3],[1234,   10,   10,    7],[   8,   10,   10,   11]])

深拷贝

copy 方法生成数组及其数据的完整拷贝。

函数和方法概述

  1. 数组创建

    arange, array, copy, empty, empty_like, eye, fromfile, fromfunction, identity, linspace, logspace, mgrid, ogrid, ones, ones_like, r, zeros, zeros_like

  2. 转换

    ndarray.astype, atleast_1d, atleast_2d, atleast_3d, mat

  3. 手法

    array_split, column_stack, concatenate, diagonal, dsplit, dstack, hsplit, hstack, ndarray.item, newaxis, ravel, repeat, reshape, resize, squeeze, swapaxes, take, transpose, vsplit, vstack

  4. 问题

    all, any, nonzero, where

  5. 顺序

    argmax, argmin, argsort, max, min, ptp, searchsorted, sort

  6. 操作

    choose, compress, cumprod, cumsum, inner, ndarray.fill, imag, prod, put, putmask, real, sum

  7. 基本统计

    cov, mean, std, var

  8. 基本线性代数

    cross, dot, outer, linalg.svd, vdot

Less基础

广播规则

让所有输入数组都向其中shape最长的数组看齐,shape中不足的部分都通过在前面加1补齐 输出数组的shape是输入数组shape的各个轴上的最大值

如果输入数组的某个轴和输出数组的对应轴的长度相同或者其长度为1时,这个数组能够用来计算,否则出错,当输入数组的某个轴的长度为1时,沿着此轴运算时都用此轴上的第一组值

索引技巧

除了通过整数和切片进行索引之外,还可以使用整数数组和布尔数组进行索引。

当被索引的数组 a 是一个多维数组,单个索引数组指的是 a 的第一个维度。

当我们用(整数)索引数组索引数组时,我们提供了要选择的索引列表。使用布尔值作为索引时,方法是不同的;我们明确地选择数组中的哪些元素我们想要的,哪些不是。

>>> a = np.arange(12).reshape(3,4)
>>> b = a > 4
>>> b
array([[False, False, False, False],[False,  True,  True,  True],[ True,  True,  True,  True]])
>>> a[b]
array([ 5,  6,  7,  8,  9, 10, 11])
>>> a[b] = 0
>>> a
array([[0, 1, 2, 3],[4, 0, 0, 0],[0, 0, 0, 0]])

NumPy个人学习笔记【持续更新】相关推荐

  1. 重拾CCNA,学习笔记持续更新ing......(4)

    重拾CCNA,学习笔记持续更新ing......(4) 路由器作用功能的经典解说(笑)(非原创) 假设你的名字叫小不点,你住在一个大院子里,你的邻居有很多小伙伴,在门口传达室还有个看大门的李大爷,李大 ...

  2. Admin.NET管理系统(vue3等前后端分离)学习笔记--持续更新

    我的学习笔记 - 9iAdmin.NET 欢迎学习交流 (一)前端笔记 1.1 关于.env的设置 1.2 关于路由模式问题 1.3 关于 vue.config.ts 1.4 关于 打包(pnpm r ...

  3. JS逆向学习笔记 - 持续更新中

    JS逆向学习笔记 寻找深圳爬虫工作,微信:cjh-18888 文章目录 JS逆向学习笔记 一. JS Hook 1. JS HOOK 原理和作用 原理:替换原来的方法. (好像写了句废话) 作用: 可 ...

  4. 专升本 计算机 公共课学习笔记(持续更新中...)

    计算机公共课学习笔记 第一章 计算机基础知识(30分) 1.计算机概述 计算机(Computer)的起源与发展 计算机(Computer)也称"电脑",是一种具有计算功能.记忆功能 ...

  5. CSS(3)学习笔记——持续更新

    本篇皆是本人长期记录并整理出来的笔记,如有记录得不对的地方,欢迎探讨.记录的很少,将不断学习不断补充. 1 选择器 CSS(3)中提供的选择器手册(w3school):http://www.w3sch ...

  6. typescript-----javascript的超集,typescript学习笔记持续更新中......

    Typescript,冲! Typescript 不是一门全新的语言,Typescript是 JavaScript 的超集,它对 JavaScript进行了一些规范和补充.使代码更加严谨. 一个特别好 ...

  7. 计算机网络:学习笔记(持续更新)

    文章目录 前言 1.1 计算机网络基本概念 什么是计算机网络? 什么是网络协议? 1.2 计算机网络结构 计算机网络结构 网络边缘 接入网络(物理介质) 网络核心(核心网络) Internet结构 1 ...

  8. Docker快速入门学习笔记-持续更新中

    Docker安装 #1.卸载旧的版本 yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker ...

  9. 最全Linux系统学习笔记--持续更新

    1.shell语法 命令 选项 参数 命令:整条shell命令的主体 选项:会影响会微调整个命令的行为 参数:命令作用的对象 1.自动补全 2.快捷键 ctrl+C:终止前台运行的程序 ctrl+D: ...

  10. MySQL学习笔记(持续更新ING)

    SQL语法SQL 语法SQL语法 SQL对大小写不敏感:SELECT与select是相同的.SQL 对大小写不敏感:SELECT 与 select 是相同的.SQL对大小写不敏感:SELECT与sel ...

最新文章

  1. 去大厂面试,说了没高并发经验,面试官还是抓着这个问!
  2. PyQt5 技术篇-plainTextEdit控件获得文本内容方法、设置文本内容方法。
  3. 前端优化-vue-cli4安装webpack-bundle-analyzer分析包文件
  4. .Net Core小技巧 - 使用Swagger上传文件
  5. 《剑指Offer》解题目录(更新完毕)
  6. (王道408考研操作系统)第三章内存管理-第二节4:页面分配策略
  7. 安装程序无法创建新的系统分区也无法定位现有系统分区_不要再给硬盘胡乱分区了,这里有最方便安全的分区方法。...
  8. python编程狮_python编程狮app
  9. 进入Mysql数据库操作
  10. 11-FreeSwitch-freeswitch架构
  11. windows7自带的计算机,win7电脑自带投屏吗?
  12. RabbitMQ Management:Management API returned status code 500
  13. linux 内存耗尽重启,【server故障】linux下JVM内存耗尽故障
  14. ACM javaIO 快速 读写
  15. 搜狗输入法,输英语单词自动提示
  16. TensorFlow下用自己的数据训练Fater-RCNN
  17. 2020高考一轮复习数学:必修1集合的概念及运算【经典例题及解析】
  18. 升级你的 Flutter 版本
  19. 汇编版PE结构解析器
  20. 经济学:宏观经济学计算题

热门文章

  1. 04.HC_SR04超声波测距
  2. 基于Asterisk的网络传真
  3. WiFi AssociationOmnipeek抓包分析
  4. 网络报修信息管理代码java_javaweb在线报修维修系统、java+ssh+mysql实现
  5. itr 注册鉴权_宽带多媒体卫星通信系统的带宽管理框架
  6. python3 PIL模块 写入中文_英文_字符串 在图片中居中对齐【字符串包括中英文数字等】
  7. 计算机应用基础全册教案,[定稿]计算机应用基础全册教案
  8. UIT创新科完成四川天翼“全球眼”定制化存储
  9. 牛客网 2018校招真题 爱奇艺 最后一位
  10. 前端JS常用工具方法