1.一维数组的索引及切片

  1. ar = np.arange(20)
  2. print(ar)
  3. print(ar[4])
  4. print(ar[3:6])
  5. print(ar[:4:2]) #索引到4 按2的步长
  6. print('-----')

输出结果:

  1. [ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19]
  2. 4
  3. [3 4 5]
  4. [0 2]
  5. -----

2. 二维数组的索引及切片

  1. ar = np.arange(16).reshape(4,4)
  2. print(ar, '数组轴数为%i' %ar.ndim) # 4*4的数组
  3. print(ar[2], '数组轴数为%i' %ar[2].ndim) # 切片为下一维度的一个元素,所以是一维数组
  4. print(ar[2][1]) # 二次索引,得到一维数组中的一个值
  5. print(ar[1:3], '数组轴数为%i' %ar[1:3].ndim) # 切片为两个一维数组组成的二维数组
  6. print(ar[2,2]) # 切片数组中的第三行第三列 → 10
  7. print(ar[:2,1:]) # 切片数组中的1,2行、2,3,4列 → 二维数组
  8. print('-----')

输出结果:

  1. [[ 0 1 2 3]
  2. [ 4 5 6 7]
  3. [ 8 9 10 11]
  4. [12 13 14 15]] 数组轴数为2
  5. [ 8 9 10 11] 数组轴数为1
  6. 9
  7. [[ 4 5 6 7]
  8. [ 8 9 10 11]] 数组轴数为2
  9. 10
  10. [[1 2 3]
  11. [5 6 7]]
  12. -----

3.三维数组的索引及切片

  1. ar = np.arange(8).reshape(2,2,2)
  2. print(ar, '数组轴数为%i' %ar.ndim) # 2*2*2的数组
  3. print('\n')
  4. print(ar[0], '数组轴数为%i' %ar[0].ndim) # 三维数组的下一个维度的第一个元素 → 一个二维数组
  5. print(ar[0][0], '数组轴数为%i' %ar[0][0].ndim) # 三维数组的下一个维度的第一个元素下的第一个元素 → 一个一维数组
  6. print(ar[0][0][1], '数组轴数为%i' %ar[0][0][1].ndim)

输出结果:

  1. [[[0 1]
  2. [2 3]]
  3.  
  4. [[4 5]
  5. [6 7]]] 数组轴数为3
  6.  
  7. [[0 1]
  8. [2 3]] 数组轴数为2
  9. [0 1] 数组轴数为1
  10. 1 数组轴数为0

4. 布尔型索引及切片

  1. # 布尔型索引及切片
  2.  
  3. ar = np.arange(12).reshape(3,4)
  4. i = np.array([True,False,True])
  5. j = np.array([True,True,False,False])
  6. print(ar)
  7. print(i)
  8. print(j)
  9. print(ar[i,:]) # 在第一维度做判断,只保留True,这里第一维度就是行,ar[i,:] = ar[i](简单书写格式)
  10. print(ar[:,j]) # 在第二维度做判断,这里如果ar[:,i]会有警告,因为i是3个元素,而ar在列上有4个
  11. # 布尔型索引:以布尔型的矩阵去做筛选
  12.  
  13. m = ar > 5
  14. print(m) # 这里m是一个判断矩阵
  15. print(ar[m]) # 用m判断矩阵去筛选ar数组中>5的元素 → 重点!后面的pandas判断方式原理就来自此处

输出结果:

  1. [[ 0 1 2 3]
  2. [ 4 5 6 7]
  3. [ 8 9 10 11]]
  4. [ True False True]
  5. [ True True False False]
  6. [[ 0 1 2 3]
  7. [ 8 9 10 11]]
  8. [[0 1]
  9. [4 5]
  10. [8 9]]
  11. [[False False False False]
  12. [False False True True]
  13. [ True True True True]]
  14. [ 6 7 8 9 10 11]

5.数组索引及切片的值更改、复制

  1. ar = np.arange(10)
  2. print(ar)
  3. ar[5] = 100
  4. ar[7:9] = 200
  5. print(ar)
  6. # 一个标量赋值给一个索引/切片时,会自动改变/传播原始数组
  7.  
  8. ar = np.arange(10)
  9. b = ar.copy()
  10. b[7:9] = 200
  11. print(ar)
  12. print(b)
  13. # 复制

输出结果:

  1. [0 1 2 3 4 5 6 7 8 9]
  2. [ 0 1 2 3 4 100 6 200 200 9]
  3. [0 1 2 3 4 5 6 7 8 9]
  4. [ 0 1 2 3 4 5 6 200 200 9]

Numpy 索引及切片的更多相关文章

  1. numpy 索引和切片

    一.取行 1.单行 数组[index, :] # 取第index+1行 例子 import numpy as np arr1 = np.arange(0, 24).reshape(4, 6) # 取第 ...

  2. numpy之索引和切片

    索引和切片 一维数组 一维数组很简单,基本和列表一致. 它们的区别在于数组切片是原始数组视图(这就意味着,如果做任何修改,原始都会跟着更改). 这也意味着,如果不想更改原始数组,我们需要进行显式的复制 ...

  3. Numpy系列(四)- 索引和切片

    Python 中原生的数组就支持使用方括号([])进行索引和切片操作,Numpy 自然不会放过这个强大的特性.  单个元素索引 1-D数组的单元素索引是人们期望的.它的工作原理与其他标准Python序 ...

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

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

  5. Numpy:索引与切片

    numpy基本的索引和切片 import numpy as np arr = np.array([1,2,3,555,666,888,10]) arr array([ 1, 2, 3, 555, 66 ...

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

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

  7. numpy数组的索引和切片

    numpy数组的索引和切片 基本切片操作 >>> import numpy as np >>> arr=np.arange(10) >>> arr ...

  8. Numpy数组基本操作(数组索引,数组切片以及数组的形状,数组的拼接与分裂)

    一:数组的属性 每个数组都有它的属性,可分为:ndim(数组的维度),shape(数组每个维度的大小),size(数组的总大小),dtype(数组数据的类型) 二:数组索引 和python列表一样,N ...

  9. Numpy学习二:数组的索引与切片

    1.一维数组索引与切片#创建一维数组arr1d = np.arange(10)print(arr1d) 结果:[0 1 2 3 4 5 6 7 8 9] #数组的索引从0开始,通过索引获取第三个元素a ...

随机推荐

  1. 在快速自定义的NopCommerce中使用实体框架(EF)代码优先迁移

    我看到很多nopCommerce论坛的用户问他们如何使用Entity Framework(EF)代码优先迁移来自定义nopCommerce,添加新的字段和entites核心.我实际上在做nopComm ...

  2. IDEA中的一些常用的设置与快捷键

    idea 清屏(控制台)快捷键 eclipse清屏快捷键为鼠标右键+R 而在idea中默认并没有清屏console的快捷键 所以需要我们自行设置: 1,ctrl+alt+s打开settings 2,找 ...

  3. iOS - The identity used to sign the executable is no longer valid

    ①.首先在xcode中的Build Settings中看有没有设置: ②.账号是不是多个人在用,个人开发者的账号只能绑定一台电脑,当另外一台电脑绑定了话,你的电脑就失效了.你确认下是不是这个原因造成的 ...

  4. u-boot分析(六)----时钟初始化

    u-boot分析(六) 上篇博文我们按照210的启动流程,分析到了关闭看门狗,今天我们继续按照u-boot的启动流程进行分析,今天我们会主要分析时钟的初始化. 今天我们会用到的文档: 1.       ...

  5. Struts2_带参数的结果集

    页面请求: <a href="user/user?type=1">传参数</a> action: public Integer type; public S ...

  6. 诸葛io | 精细化运营分析解决方案

    类型: 定制服务 软件包: business intelligence internet media solution collateral 联系服务商 产品详情 解决方案 概要 数据监测 ? 异常发 ...

  7. IOS开发入门你们准备好了吗?

    我们对于IOS的了解最多应该就是苹果手机独有的IOS系统吧,也可以说是单任务管理器,这可以说是一个优势,但是随着技术提升IOS慢慢有被超越的趋势,但是很多大公司还是需要这方面的开发人才,那么今天我们来 ...

  8. kk录像机怎么剪辑视频 kk录像机视频剪辑教程

    很多朋友录制视频都是用KK录像机,录制视频过后我们需要对视频进行修改和调整,下面小编就教大家怎么来剪辑KK录像机录制的视频 1.首先我们打开软件点[添加一个视频],添加需要剪切的视频 2.将播放指针移 ...

  9. Js arguments.callee();函数自己调用自己

    1.阶乘的时候,函数一般要用到递归算法,所以函数内部一定会调用自身 //递归,阶乘 function sum(num){ ) { ; } else{ ); //自己调用自己,递归 } } alert( ...

  10. Js Date类型

    一:格式化方法 var box=new Date(); //标准时间,如果没传参数,得到的时间为当前时间 //alert(Date.parse('4/12/2007')); //11763072000 ...