numpy思维导图

ndarray对象是什么

  • NumPy 最重要的一个特点是其 N 维数组对象 ndarray,它是一系列同类型数据的集合,以 0 下标为开始进行集合中元素的索引。
  • ndarray 对象是用于存放同类型元素的多维数组。
  • ndarray 中的每个元素在内存中都有相同存储大小的区域。

ndarray 内部由以下内容组成:

  • 一个指向数据(内存或内存映射文件中的一块数据)的指针。

  • 数据类型或 dtype,描述在数组中的固定大小值的格子。

  • 一个表示数组形状(shape)的元组,表示各维度大小的元组。

  • 一个跨度元组(stride),其中的整数指的是为了前进到当前维度下一个元素需要"跨过"的字节数。

创建数组的多种方式

  • 创建数组(empty、zeros、ones、full、eye)
  • 从已有的数组创建数组(asarray、frombuffer、fromiter)
  • 从数值范围创建数组(arange、linespace、logspace、random)

特性

  • 切片、索引、高级索引

    ndarray对象的内容可以通过索引或切片来访问和修改,与 Python 中 list 的切片操作一样。

    切片是从原数组切出一个新的数组;索引是可以通过下标访问数组。

    高级索引是:整数数组索引、布尔索引、花式索引。

      整数数组索引:见名知意,通过在x[]放入整数数组来表达要索引元素的下标,来检索原数组。

      例如:

# 整数数组索引
x = np.array([[1, 2], [3, 4], [5, 6]])
print(x, '\n')
t = np.array([[0, 1, 2], [0, 1, 0]])  # 这里,我要获取原数组中(0,0)、(1,1)、(2,0)位置的元素
print(t, '\n')
y = x[[0, 1, 2], [0, 1, 0]]
print(y, '\n')
# 输出
[[1 2]
[3 4]
[5 6]] [[0 1 2]
[0 1 0]] [1 4 5]

      布尔索引:通过布尔运算(如:比较运算符)来获取符合指定条件的元素的数组。

# # 布尔索引
x = np.array([[0, 1, 2], [3, 4, 5], [6, 7, 8], [9, 10, 11]])
print(x)
print(x[x > 5], '\n') # # 使用了 ~(取补运算符)来过滤 NaN。
a = np.array([np.nan, 1, 2, np.nan, 3, 4, 5])
print(a)
print(a[~np.isnan(a)], '\n') # # 如何从数组中过滤掉非复数元素
a = np.array([1, 2+6j, 5, 3.5+5j])
print(a)
print('非复数 :', a[~np.iscomplex(a)])
print('复数 :', a[np.iscomplex(a)], '\n')
# 输出

[[ 0  1  2]
[ 3 4 5]
[ 6 7 8]
[ 9 10 11]]
[ 6 7 8 9 10 11] [nan 1. 2. nan 3. 4. 5.]
[1. 2. 3. 4. 5.] [1. +0.j 2. +6.j 5. +0.j 3.5+5.j]
非复数 : [1.+0.j 5.+0.j]
复数 : [2. +6.j 3.5+5.j]

      花式索引:

  • 广播

丰富的函数

numpy学习总结(重点讲解索引方式)的更多相关文章

  1. 『Numpy学习指南』排序&索引&抽取函数介绍

    排序: numpy.lexsort(): numpy.lexsort()是个排字典序函数,因为很有意思,感觉也蛮有用的,所以单独列出来讲一下: 强调一点,本函数只接受一个参数! import nump ...

  2. NumPy 学习 第二篇:索引和切片

    数组索引是指使用中括号 [] 来定位数据元素,不仅可以定位到单个元素,也可以定位到多个元素.索引基于0,并接受从数组末尾开始索引的负索引. 举个例子,正向索引从0开始,从数组开始向末尾依次加1递增:负 ...

  3. NumPy学习(索引和切片,合并,分割,copy与deep copy)

    NumPy学习(索引和切片,合并,分割,copy与deep copy) 目录 索引和切片 合并 分割 copy与deep copy 索引和切片 通过索引和切片可以访问以及修改数组元素的值 一维数组 程 ...

  4. 第三篇:数据仓库系统的实现与使用(含OLAP重点讲解)

    前言 上一篇重点讲解了数据仓库建模,它是数据仓库开发中最核心的部分.然而完整的数据仓库系统还会涉及其他一些组件的开发,其中最主要的是ETL工程,在线分析处理工具(OLAP)和商务智能(BI)应用等. ...

  5. 数据分析之Pandas和Numpy学习笔记(持续更新)<1>

    pandas and numpy notebook        最近工作交接,整理电脑资料时看到了之前的基于Jupyter学习数据分析相关模块学习笔记.想着拿出来分享一下,可是Jupyter导出来h ...

  6. BTREE这种Mysql默认的索引方式,具有普遍的适用性

    文章转自 https://blog.csdn.net/caomiao2006/article/details/52145477 Mysql目前主要有以下几种索引方式:FULLTEXT,HASH,BTR ...

  7. Mysql几种索引方式的区别及适用情况 (转)

    文章摘自http://blog.sina.com.cn/s/blog_4aca42510102v5l2.html Mysql目前主要有以下几种索引方式:FULLTEXT,HASH,BTREE,RTRE ...

  8. NumPy学习(让数据处理变简单)

    NumPy学习(一) NumPy数组创建 NumPy数组属性 NumPy数学算术与算数运算 NumPy数组创建 NumPy 中定义的最重要的对象是称为 ndarray 的 N 维数组类型. 它描述相同 ...

  9. (转)Python数据分析之numpy学习

    原文:https://www.cnblogs.com/nxld/p/6058572.html https://morvanzhou.github.io/tutorials/data-manipulat ...

随机推荐

  1. java动态代理源码解析

    众所周知,java动态代理同反射原理一直是许多框架的底层实现,之前一直没有时间来分析动态代理的底层源码,现结合源码分析一下动态代理的底层实现 类和接口 java动态代理的主要类和接口有:java.la ...

  2. Java IO系列之二:NIO基本操作

    核心部分  NIO( New Input/ Output) , 引入了一种基于通道和缓冲区的 I/O 方式,NIO 是一种同步非阻塞的 IO 模型.同步是指线程不断轮询 IO 事件是否就绪,非阻塞是指 ...

  3. 【转】Redis学习笔记(五)如何用Redis实现分布式锁(2)—— 集群版

    原文地址:http://bridgeforyou.cn/2018/09/02/Redis-Dsitributed-Lock-2/ 单机版实现的局限性 在上一篇文章中,我们讨论了Redis分布式锁的实现 ...

  4. DevExpress winform 友好皮肤

    DevExpress设置默认皮肤及各种皮肤样式   DevExpress设置默认皮肤及各种皮肤样式 设置默认皮肤代码: 在程序入口Program.cs里添加如下代码 引用using DevExpres ...

  5. 如何解压DMK固件

    一.DMK固件 从罗克韦尔自动化下载的固件通常是以DMK为后缀名的文件: DMK文件无法直接使用,需要使用DMK Extraction Tool解压: 二.方法步骤 1.  如果从官网下载的固件文件后 ...

  6. word20170108逛景点 Sightseeing有用的词和句子

    有用的词: sights and attractions: 景点 ticket booth: 售票处 will call ticket: 网络售票 guided tour: 带导游的游览 audio ...

  7. java中几种加/解密API

    如基本的单向加密算法: BASE64 严格地说,属于编码格式,而非加密算法 MD5(Message Digest algorithm 5,信息摘要算法) SHA(Secure Hash Algorit ...

  8. Maven - 本地仓库(.m2) vs. 远程仓库(联网)

    转载自:https://www.cnblogs.com/shuaiandjun/p/7604619.html 什么是Maven仓库在不用Maven的时候,比如说以前我们用Ant构建项目,在项目目录下, ...

  9. 项目Alpha冲刺(团队)-代码规范、冲刺任务与计划

    课程名称:软件工程1916|W(福州大学) 作业要求:项目Alpha冲刺(团队)-代码规范.冲刺任务与计划 团队名称:SkyReach 作业目标:确定团队项目的代码规范.冲刺任务与计划 代码规范:隐流 ...

  10. Django_路由详

    动态路由和动态参数捕获 动态路由:url支持正则表达式, 访问的url能够匹配成功就去执行对应的视图函数 捕获参数: # 捕获参数,位置传参 url(r'^data/([0-9]{4})/([0-2] ...