numpy数组一般有三种索引方式:

  1. 基础索引与切片
  2. 布尔索引
  3. 神奇索引

三种方法都可截取原数组中的部分数据,但是使用的时候在本质上却有区别,尤其是在处理大量数据时,不弄清索引本质,会导致最后预测结果不准确。


基础索引与切片

先上代码:

import numpy as nparr = np.arange(25).reshape(5,5)
arr

arr1 = arr[:3]
arr1

arr1[1] = -1
arr

大家可以从上面的结果中发现,将arr前3行赋值给arr1,然后将arr1的第2行的数值改为-1,最后arr也发生了改变。原因是在基础索引中,返回的只是原数组的视图,而不是复制原数组,任何对于视图的修改,都会影响原数组。

解决方法,利用ndarray自带方法copy(),复制原数组。

arr = np.arange(25).reshape(5,5)
arr
arr1 = arr.copy()
arr1[1]=-1
arr

布尔索引

先上代码:

bool_ = [True,False,True,False,False]arr1 = arr[bool_]arr1

arr1[1]=-1arr

可以发现,布尔索引并未出现类似问题,因为利用布尔值索引时,总是生成数据的拷贝,所以改变选择数据,对原数组没有影响。

神奇索引

index = [3,4,1,2]arr1 = arr[index]arr1

arr1[1]=-1arr

神奇索引和布尔索引一样,选择数据的改变也不会影响原数组。


如果这些小Tips对你有帮助的话,求赞 求收藏

对数组下面的数组截取_numpy数组不同索引方式的区别相关推荐

  1. java 截取byte数组_2020年的秋招已经开始了!最新Java面试题大全(文末附参考答案)送给大家...

    包含的模块 本文分为十九个模块,分别是:Java 基础.容器.多线程.反射.对象拷贝.Java Web .异常.网络.设计模式.Spring/Spring MVC.Spring Boot/Spring ...

  2. element js 包含字符_携程春招题目字符串截取和数组升维

    编程风格 简单陈述一下文中代码使用的编程风格: 使用 ES5,以避免有些在线编程平台不支持 ES6 的状况(所以在这里没有用 new Set()) Airbnb 代码规范,不使用单 var 模式 变量 ...

  3. Js常用方法:JS字符串截取、数组截取等

    Js常用方法:JS字符串截取.数组截取等 Js常用方法(二)String字符串 .Array数组 减操作 前言:前端开发中最常见的就是对字符串.数组或对象增删改查等操作 下面总结一下常用且比较实用的方 ...

  4. js字符串截取为数组

    var str="hello,word,java,eclipse,jsp"; //字符串截取为数组 var strArr=str.split(","); for ...

  5. java截取数组_JS Array.slice 截取数组的实现方法

    slice定义和用法 slice() 方法可从已有的数组中返回选定的元素. 语法 arrayObject.slice(start,end) 参数 描述 start 必需.规定从何处开始选取.如果是负数 ...

  6. numpy随机生成01矩阵_NumPy数组基本介绍

    本文作者:孙晓玲 文字编辑:钱梦璇 技术总编:张   邯 NumPy是短语"Numerical Python"的缩写,NumPy库是一个功能强大的Python库,主要用于对多维数组 ...

  7. c++随机打乱数组_NumPy数组基本介绍

    本文作者:孙晓玲 文字编辑:钱梦璇 技术总编:张   邯 NumPy是短语"Numerical Python"的缩写,NumPy库是一个功能强大的Python库,主要用于对多维数组 ...

  8. numpy创建三维空数组_numpy数组的创建和属性转换

    一.数据与numpy数组的创建 1. python数组的创建 python中的固定类型数组: python中提供了几种将数组存储在有效的.固定类型的数据缓存中的选项.内置的数组(array)模块可以创 ...

  9. python改变数组形状_NumPy数组的变形(改变数组形状)

    在机器学习以及深度学习的任务中,通常需要将处理好的数据以模型能接收的格式输入给模型,然后由模型通过一系列的运算,最终返回一个处理结果.然而,由于不同模型所接收的输入格式不一样,往往需要先对其进行一系列 ...

最新文章

  1. 创成汇2019年参加创新创业大赛都能获得什么?
  2. Beaglebone Black教程Beaglebone Black中的Cloud9 IDE基本使用
  3. laytpl遍历实体列表_Layui数据表格之获取表格中所有的数据方法
  4. java泛型程序设计——翻译泛型表达式+翻译泛型方法
  5. php tp 模板assign,thinkphp中怎么让assign在另一个模板里使用呢?
  6. python亿级mysql数据库导出_Python实现将MySQL数据库表中的数据导出生成csv格式文件的方法...
  7. 搜索的php mysql代码生成器_四款强大的PHP代码生成器
  8. 深入java虚拟机(二) 对象的创建
  9. 设计sample语言的语法_Verilog语法之〇:Verilog HDL简介
  10. Python机器学习简介
  11. 鸿蒙的物联网世界之我的一天
  12. heartbeat: ha.cf配置文件中文详解
  13. android输入法中文在哪里设置,android输入法怎么设置中文
  14. 【安全狗高危安全通告】OpenSSL存在远程代码执行漏洞和拒绝服务漏洞
  15. electron打包后在win7上打开异常KERNEL32.dll
  16. (附源码)计算机毕业设计ssm大学生学习交友平台
  17. 知识进步的阶梯--书
  18. Python Unittest简明教程
  19. IHE测试系列之一:胜利归来
  20. html中按钮方法,html中button标签的使用详解

热门文章

  1. Qt工作笔记-对QXmlStreamReader的进一步认识(读取XML)
  2. Qt工作笔记-遍历文件夹里面的所有文件,并在QTreeWidget内显示
  3. java封装demo_java封装
  4. python123百钱买百鸡_求解百钱买百鸡问题。假设大鸡 5 元一只,中鸡 3 元一只,小鸡 1 元三只,现有 100 元钱想买 100 只鸡,有多少种买法?截图代码和运行结果_学小易找答案...
  5. 操作系统之进程管理:8、进程互斥的软件实现方法(单标志、双标志、Peterson)
  6. 动态规划经典题之编辑距离
  7. Python Numpy 数组的初始化和基本操作
  8. PyTorch之torch.nn.Softmax()
  9. 1313. 解压缩编码列表
  10. JS 客户端浏览器操作、BOM、渗透客户端浏览器(windows对象:screen屏幕操作、location浏览器域名、history浏览器历史、Navigator浏览器信息、cookie)