NumPy(十):ndarray数组索引、切片
一维、二维、三维的数组如何索引?
- 直接进行索引,切片
- 对象[ : , : , : ] – 先行后列 (以逗号分开各个维度,第1组表示第1维的切片方式,第2组表示第2维的切片方式…)
一、基本索引及切片
1、一维数组索引及切片
import numpy as np# 一维数组索引及切片
ar = np.arange(20)
print('ar = ', ar)
print('ar[4] = ', ar[4])
print('ar[3:6] = ', ar[3:6])
打印结果:
ar = [ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19]
ar[4] = 4
ar[3:6] = [3 4 5]
2、二维数组索引及切片
# 二维数组索引及切片
ar = np.array([[0, 1, 2, 3],[4, 5, 6, 7],[8, 9, 10, 11],[12, 13, 14, 15]])
print('ar = {0}; ar数组轴数 = {1}'.format(ar, ar.ndim)) # 4*4的数组
print('\nar[2] = {0}; ar[2]数组轴数 = {1}'.format(ar[2], ar[2].ndim)) # 切片为下一维度的一个元素,所以是一维数组
print('\nar[2][1] = {0}; ar[2][1]数组轴数 = {1}'.format(ar[2][1], ar[2][1].ndim)) # 二次索引,得到一维数组中的一个值
print('\nar[1:3] = {0}; ar[1:3]数组轴数 = {1}'.format(ar[1:3], ar[1:3].ndim)) # 切片为两个一维数组组成的二维数组
print('\nar[2, 2] = {0}; ar[2, 2]数组轴数 = {1}'.format(ar[2, 2], ar[2, 2].ndim)) # 切片数组中的第三行第三列 → 10
print('\nar[:2, 1:] = {0}; ar[:2, 1:]数组轴数 = {1}'.format(ar[:2, 1:], ar[:2, 1:].ndim)) # 切片数组中的1,2行、2,3,4列 → 二维数组
打印结果:
ar = [[ 0 1 2 3][ 4 5 6 7][ 8 9 10 11][12 13 14 15]]; ar数组轴数 = 2ar[2] = [ 8 9 10 11]; ar[2]数组轴数 = 1ar[2][1] = 9; ar[2][1]数组轴数 = 0ar[1:3] = [[ 4 5 6 7][ 8 9 10 11]]; ar[1:3]数组轴数 = 2ar[2, 2] = 10; ar[2, 2]数组轴数 = 0ar[:2, 1:] = [[1 2 3][5 6 7]]; ar[:2, 1:]数组轴数 = 2
二维数组索引方式:
- 举例:获取第一个股票的前3个交易日的涨跌幅数据
# 二维的数组,两个维度
stock_change[0, 0:3]
返回结果:
array([-0.03862668, -1.46128096, -0.75596237])
3、三维数组索引及切片
# **三维数组索引及切片
ar = np.array([[[0, 1],[2, 3]],[[4, 5],[6, 7]]])print('ar = {0}; ar数组轴数 = {1}'.format(ar, ar.ndim)) # 2*2*2的数组
print('ar[0] = {0}; ar[0]数组轴数 = {1}'.format(ar[0], ar[0].ndim)) # 三维数组的下一个维度的第一个元素 → 一个二维数组
print('ar[0][0] = {0}; ar[0][0]数组轴数 = {1}'.format(ar[0][0], ar[0][0].ndim)) # 三维数组的下一个维度的第一个元素下的第一个元素 → 一个一维数组
print('ar[0][0][1] = {0}; ar[0][0][1]数组轴数 = {1}'.format(ar[0][0][1], ar[0][0][1].ndim))
打印结果:
ar = [[[0 1][2 3]][[4 5][6 7]]]; ar数组轴数 = 3
ar[0] = [[0 1][2 3]]; ar[0]数组轴数 = 2
ar[0][0] = [0 1]; ar[0][0]数组轴数 = 1
ar[0][0][1] = 1; ar[0][0][1]数组轴数 = 0
- 三维数组索引方式:
# 三维
a1 = np.array([ [[1,2,3],[4,5,6]], [[12,3,34],[5,6,7]]])
# 返回结果
array([[[ 1, 2, 3],[ 4, 5, 6]],[[12, 3, 34],[ 5, 6, 7]]])
# 索引、切片
>>> a1[0, 0, 1] # 输出: 2
二、布尔型索引及切片
import numpy as npar = np.array([[0, 1, 2, 3],[4, 5, 6, 7],[8, 9, 10, 11]])# 布尔型索引:以布尔型的矩阵去做筛选
i = np.array([True, False, True])
j = np.array([True, True, False, False])
print('ar = ', ar)
print('\ni = ', i)
print('\nj = ', j)
print('\nar[i, :] = ', ar[i, :]) # 在第一维度做判断,只保留True,这里第一维度就是行,ar[i,:] = ar[i](简单书写格式)
print('\nar[:, j] = ', ar[:, j]) # 在第二维度做判断,这里如果ar[:,i]会有警告,因为i是3个元素,而ar在列上有4个
print('-' * 100)m = ar > 5
print('m = ', m) # 这里m是一个判断矩阵
print('\nar[m] = ', ar[m]) # 用m判断矩阵去筛选ar数组中>5的元素 → 重点!后面的pandas判断方式原理就来自此处
打印结果:
ar = [[ 0 1 2 3][ 4 5 6 7][ 8 9 10 11]]i = [ True False True]j = [ True True False False]ar[i, :] = [[ 0 1 2 3][ 8 9 10 11]]ar[:, j] = [[0 1][4 5][8 9]]
----------------------------------------------------------------------------------------------------
m = [[False False False False][False False True True][ True True True True]]ar[m] = [ 6 7 8 9 10 11]Process finished with exit code 0
三、数组索引及切片的值更改、复制
一个标量赋值给一个索引/切片时,会自动改变/传播原始数组
import numpy as np# 一个标量赋值给一个索引/切片时,会自动改变/传播原始数组ar = np.array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
print('ar = ', ar)# 数组索引及切片的值更改、复制
ar[5] = 100
ar[7:9] = 200
print('ar = ', ar)
print('-' * 100)# 复制
ar = np.array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
b = ar.copy()
b[7:9] = 200
print('ar = ', ar)
print('b = ', b)
打印结果:
ar = [0 1 2 3 4 5 6 7 8 9]
ar = [ 0 1 2 3 4 100 6 200 200 9]
----------------------------------------------------------------------------------------------------
ar = [0 1 2 3 4 5 6 7 8 9]
b = [ 0 1 2 3 4 5 6 200 200 9]Process finished with exit code 0
NumPy(十):ndarray数组索引、切片相关推荐
- Python 数据分析三剑客之 NumPy(二):数组索引 / 切片 / 广播 / 拼接 / 分割
CSDN 课程推荐:<Python 数据分析与挖掘>,讲师刘顺祥,浙江工商大学统计学硕士,数据分析师,曾担任唯品会大数据部担任数据分析师一职,负责支付环节的数据分析业务.曾与联想.亨氏.网 ...
- numpy 学习汇总33 - 索引切片( 初步学习 tcy)
索引切片 2018/6/18 2018/11/26===================================================================== 1. 索引 ...
- python数据分析 - numpy | ndarray数组 | numpy常用函数
文章目录 数据分析 numpy概述 numpy历史 numpy的核心:多维数组 numpy基础 ndarray数组 内存中的ndarray对象 ndarray数组对象的特点 ndarray数组对象的创 ...
- Numpy基础(part1)--ndarray数组
鄙人学习笔记,这个笔记以例子为主. 开发工具:Spyder 文章目录 使用python做数据分析的常用库 numpy概述 ndarray数组 内存中的ndarray对象 ndarray数组对象的创建 ...
- python花式索引_初探Numpy中的花式索引
Numpy中对数组索引的方式有很多(为了方便介绍文中的数组如不加特殊说明指的都是Numpy中的ndarry数组),比如:基本索引:通过单个整数值来索引数组 import numpy as np arr ...
- python 一维数组所有元素是否大于_利用Python进行数据分析(5) NumPy基础: ndarray索引和切片...
概念理解 索引即通过一个无符号整数值获取数组里的值. 切片即对数组里某个片段的描述. 一维数组 一维数组的索引 一维数组的索引和Python列表的功能类似: 一维数组的切片 一维数组的切片语法格式为a ...
- numpy的基本使用 附python代码详细讲解(numpy函数,创建数组,常用属性,索引切片,数组的复制,修改维度,数组的分割、拼接、转置)
目录 使用array创建数组 使用arange创建数组 Numpy中的随机数创建 ndarray对象的常用属性 其他方式创建数组 索引和切片(一位数组.二维数组) 数组的复制 修改数组的维度 数组的拼 ...
- 玩转NumPy——NumPy数组的切片和索引
NumPy数组可以基于 0 ~n 的下标进行索引,切片对象可以通过内置的 slice 函数,并设置 start, stop 及 step 参数进行,从原数组中切割出一个新数组. eg: import ...
- python三维数组切片_【NumPy学习指南】day4 多维数组的切片和索引
ndarray支持在多维数组上的切片操作.为了方便起见,我们可以用一个省略号(...)来 表示遍历剩下的维度. (1)举例来说,我们先用arange函数创建一个数组并改变其维度,使之变成一个三维数组: ...
最新文章
- 学会使用Spring注解
- 计算机软件通常称为,计算机软件通常分为
- semaphore的使用
- mysql极客_极客mysql16
- 复杂指令集linux,精简指令集和复杂指令集区别
- 【AI视野·今日NLP 自然语言处理论文速览 第二十一期】Fri, 24 Sep 2021
- Java 算法 礼物分配
- 红豆、绿豆、黑豆、花生、莲子、薏仁米放在一起吃,可以吗?
- NP、NP-完全、NP-难问题
- 用注册表修改右键菜单
- 为了物尽其用报废的涉密计算机的硬盘,检测不到硬盘不能轻易将其定为报废
- wps小写金额转大写快捷键_WPS轻松办公—将数字转换中文大写的两种方法
- 830计算机软件综合大纲,2019年中国地质大学830计算机软件综合考试大纲.pdf
- STM32F4——FLASH闪存编程原理
- 智能设计课程v2.0 | DesignX 2021版
- 【Pygame实战】第三版本最终确认——《愤怒的小鸟梦幻爆破》上线回归,爆赞~
- STL容器之vector
- java arr转化为list
- 51nod1431 快乐排队
- 行走自由的扫地机器人,可能正在偷偷监听你