Numpy 索引及切片
1.一维数组的索引及切片
- ar = np.arange(20)
- print(ar)
- print(ar[4])
- print(ar[3:6])
- print(ar[:4:2]) #索引到4 按2的步长
- print('-----')
输出结果:
- [ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19]
- 4
- [3 4 5]
- [0 2]
- -----
2. 二维数组的索引及切片
- ar = np.arange(16).reshape(4,4)
- print(ar, '数组轴数为%i' %ar.ndim) # 4*4的数组
- print(ar[2], '数组轴数为%i' %ar[2].ndim) # 切片为下一维度的一个元素,所以是一维数组
- print(ar[2][1]) # 二次索引,得到一维数组中的一个值
- print(ar[1:3], '数组轴数为%i' %ar[1:3].ndim) # 切片为两个一维数组组成的二维数组
- print(ar[2,2]) # 切片数组中的第三行第三列 → 10
- print(ar[:2,1:]) # 切片数组中的1,2行、2,3,4列 → 二维数组
- print('-----')
输出结果:
- [[ 0 1 2 3]
- [ 4 5 6 7]
- [ 8 9 10 11]
- [12 13 14 15]] 数组轴数为2
- [ 8 9 10 11] 数组轴数为1
- 9
- [[ 4 5 6 7]
- [ 8 9 10 11]] 数组轴数为2
- 10
- [[1 2 3]
- [5 6 7]]
- -----
3.三维数组的索引及切片
- ar = np.arange(8).reshape(2,2,2)
- print(ar, '数组轴数为%i' %ar.ndim) # 2*2*2的数组
- print('\n')
- print(ar[0], '数组轴数为%i' %ar[0].ndim) # 三维数组的下一个维度的第一个元素 → 一个二维数组
- print(ar[0][0], '数组轴数为%i' %ar[0][0].ndim) # 三维数组的下一个维度的第一个元素下的第一个元素 → 一个一维数组
- print(ar[0][0][1], '数组轴数为%i' %ar[0][0][1].ndim)
输出结果:
- [[[0 1]
- [2 3]]
- [[4 5]
- [6 7]]] 数组轴数为3
- [[0 1]
- [2 3]] 数组轴数为2
- [0 1] 数组轴数为1
- 1 数组轴数为0
4. 布尔型索引及切片
- # 布尔型索引及切片
- ar = np.arange(12).reshape(3,4)
- i = np.array([True,False,True])
- j = np.array([True,True,False,False])
- print(ar)
- print(i)
- print(j)
- print(ar[i,:]) # 在第一维度做判断,只保留True,这里第一维度就是行,ar[i,:] = ar[i](简单书写格式)
- print(ar[:,j]) # 在第二维度做判断,这里如果ar[:,i]会有警告,因为i是3个元素,而ar在列上有4个
- # 布尔型索引:以布尔型的矩阵去做筛选
- m = ar > 5
- print(m) # 这里m是一个判断矩阵
- print(ar[m]) # 用m判断矩阵去筛选ar数组中>5的元素 → 重点!后面的pandas判断方式原理就来自此处
输出结果:
- [[ 0 1 2 3]
- [ 4 5 6 7]
- [ 8 9 10 11]]
- [ True False True]
- [ True True False False]
- [[ 0 1 2 3]
- [ 8 9 10 11]]
- [[0 1]
- [4 5]
- [8 9]]
- [[False False False False]
- [False False True True]
- [ True True True True]]
- [ 6 7 8 9 10 11]
5.数组索引及切片的值更改、复制
- ar = np.arange(10)
- print(ar)
- ar[5] = 100
- ar[7:9] = 200
- print(ar)
- # 一个标量赋值给一个索引/切片时,会自动改变/传播原始数组
- ar = np.arange(10)
- b = ar.copy()
- b[7:9] = 200
- print(ar)
- print(b)
- # 复制
输出结果:
- [0 1 2 3 4 5 6 7 8 9]
- [ 0 1 2 3 4 100 6 200 200 9]
- [0 1 2 3 4 5 6 7 8 9]
- [ 0 1 2 3 4 5 6 200 200 9]
Numpy 索引及切片的更多相关文章
- numpy 索引和切片
一.取行 1.单行 数组[index, :] # 取第index+1行 例子 import numpy as np arr1 = np.arange(0, 24).reshape(4, 6) # 取第 ...
- numpy之索引和切片
索引和切片 一维数组 一维数组很简单,基本和列表一致. 它们的区别在于数组切片是原始数组视图(这就意味着,如果做任何修改,原始都会跟着更改). 这也意味着,如果不想更改原始数组,我们需要进行显式的复制 ...
- Numpy系列(四)- 索引和切片
Python 中原生的数组就支持使用方括号([])进行索引和切片操作,Numpy 自然不会放过这个强大的特性. 单个元素索引 1-D数组的单元素索引是人们期望的.它的工作原理与其他标准Python序 ...
- NumPy学习(索引和切片,合并,分割,copy与deep copy)
NumPy学习(索引和切片,合并,分割,copy与deep copy) 目录 索引和切片 合并 分割 copy与deep copy 索引和切片 通过索引和切片可以访问以及修改数组元素的值 一维数组 程 ...
- Numpy:索引与切片
numpy基本的索引和切片 import numpy as np arr = np.array([1,2,3,555,666,888,10]) arr array([ 1, 2, 3, 555, 66 ...
- NumPy 学习 第二篇:索引和切片
数组索引是指使用中括号 [] 来定位数据元素,不仅可以定位到单个元素,也可以定位到多个元素.索引基于0,并接受从数组末尾开始索引的负索引. 举个例子,正向索引从0开始,从数组开始向末尾依次加1递增:负 ...
- numpy数组的索引和切片
numpy数组的索引和切片 基本切片操作 >>> import numpy as np >>> arr=np.arange(10) >>> arr ...
- Numpy数组基本操作(数组索引,数组切片以及数组的形状,数组的拼接与分裂)
一:数组的属性 每个数组都有它的属性,可分为:ndim(数组的维度),shape(数组每个维度的大小),size(数组的总大小),dtype(数组数据的类型) 二:数组索引 和python列表一样,N ...
- Numpy学习二:数组的索引与切片
1.一维数组索引与切片#创建一维数组arr1d = np.arange(10)print(arr1d) 结果:[0 1 2 3 4 5 6 7 8 9] #数组的索引从0开始,通过索引获取第三个元素a ...
随机推荐
- 在快速自定义的NopCommerce中使用实体框架(EF)代码优先迁移
我看到很多nopCommerce论坛的用户问他们如何使用Entity Framework(EF)代码优先迁移来自定义nopCommerce,添加新的字段和entites核心.我实际上在做nopComm ...
- IDEA中的一些常用的设置与快捷键
idea 清屏(控制台)快捷键 eclipse清屏快捷键为鼠标右键+R 而在idea中默认并没有清屏console的快捷键 所以需要我们自行设置: 1,ctrl+alt+s打开settings 2,找 ...
- iOS - The identity used to sign the executable is no longer valid
①.首先在xcode中的Build Settings中看有没有设置: ②.账号是不是多个人在用,个人开发者的账号只能绑定一台电脑,当另外一台电脑绑定了话,你的电脑就失效了.你确认下是不是这个原因造成的 ...
- u-boot分析(六)----时钟初始化
u-boot分析(六) 上篇博文我们按照210的启动流程,分析到了关闭看门狗,今天我们继续按照u-boot的启动流程进行分析,今天我们会主要分析时钟的初始化. 今天我们会用到的文档: 1. ...
- Struts2_带参数的结果集
页面请求: <a href="user/user?type=1">传参数</a> action: public Integer type; public S ...
- 诸葛io | 精细化运营分析解决方案
类型: 定制服务 软件包: business intelligence internet media solution collateral 联系服务商 产品详情 解决方案 概要 数据监测 ? 异常发 ...
- IOS开发入门你们准备好了吗?
我们对于IOS的了解最多应该就是苹果手机独有的IOS系统吧,也可以说是单任务管理器,这可以说是一个优势,但是随着技术提升IOS慢慢有被超越的趋势,但是很多大公司还是需要这方面的开发人才,那么今天我们来 ...
- kk录像机怎么剪辑视频 kk录像机视频剪辑教程
很多朋友录制视频都是用KK录像机,录制视频过后我们需要对视频进行修改和调整,下面小编就教大家怎么来剪辑KK录像机录制的视频 1.首先我们打开软件点[添加一个视频],添加需要剪切的视频 2.将播放指针移 ...
- Js arguments.callee();函数自己调用自己
1.阶乘的时候,函数一般要用到递归算法,所以函数内部一定会调用自身 //递归,阶乘 function sum(num){ ) { ; } else{ ); //自己调用自己,递归 } } alert( ...
- Js Date类型
一:格式化方法 var box=new Date(); //标准时间,如果没传参数,得到的时间为当前时间 //alert(Date.parse('4/12/2007')); //11763072000 ...