numpy 数组切片_numpy数组切片_云珩的博客-程序员秘密

技术标签: python  切片  

切片

切片语法格式:[start: end: step]
切片操作,适用于numpy数组,列表,元组,字符串

1. index

在这里插入图片描述
见上图,索引的形式有两种,正向索引和负向索引。
正向索引:方向是从左到右,从下表0开始。
负向索引:方向是从右到左,从下表-1开始
step:当step>0时,从左到右,当step<0时,从右到左

2. 一维数组(冒号)

一维数组通过冒号分割数组,有以下三种情形:
情形一: a[i] 返回与该索引相对应的单个元素。

a = [1,2,3,4,5,6,7,8,9]
print(a[2]#3

情形二: [start: end: step](含start,不含end)

  1. step方向与索引方向要一致,否则会输出[]
  2. 当start缺省,表示取到端点位置,具体是“起始端点”还是“结束端点”要看step的值,当为正时,表示左边为起始端点,从左向右取;当为负数时,表示右边为起始端点,从右向左取。
  3. 当end缺省时,表示取到“终点”,具体终点是在左边还是右边,要看step的值是正数还是负数。step>0,终点是右,step<0,终点是左
  4. 决定切片方向是step的正负,无关索引正负
  • start>0, end>0
a[1:6] #[2, 3, 4, 5, 6]
a[1:6:-1] #[] step方向与索引方向不一致
a[:6:-1] #[9,8] step=-1,决定从右到左的输出方向,start缺省,则默认为-1
a[6::-1] #[7, 6, 5, 4, 3, 2, 1]
  • start>0, end<0
a[1:-6] #[2, 3]
a[1:-6:-1] #[]  step方向与索引方向不一致
a[3:-8:-1] #[4, 3]
a[3:-9] #[] step方向与索引方向不一致
  • start<0, end>0
a[-1:2:-1] #[9, 8, 7, 6, 5, 4]
  • start<0, end<0
a[-6::-1] #[4, 3, 2, 1] end=0
a[:-6]  #[1, 2, 3]

3. 二维数组/多维数组(逗号)

多维数组的切片,用逗号分隔每一维度。

import numpy as np

arr = np.arange(12).reshape(3,4)
print(arr[:,0])   #[0,4,8]
print(arr[:,:1])   #[[0],[4],[8]]

参考链接: link.
第一个是,指定了最后一列,也就是说,在二维数组里的一列,就是一维的啊。那么第二个,是从最后一列开始,不妨假设一下后面还有列,那么就应该是不止一列,对机器来说,就是二维的。机器肯定不知道什么时候是一维,什么时候是二维的,所以当你用到start和end的时候,那就当作是二维的了。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/studyYUN/article/details/123693497

智能推荐

pandas的to_datetime时间转换使用方法以及学习的心得_pandas.to_date_不论如何未来很美好的博客-程序员秘密

昨天在网赛中做了一道题,虽然是外国人的Englis题目,但是内容很有学习的价值,值得仔细的学习,今天就把我所收获的一部分记录下来。其一:做个学习的资料记录。其二:分享出来,供大家参考。(收获了对处理大数据的又一次认识!!!)这是一道将DataFrame的日期数据转换为python能认识的题目。这里重点讲一下to_datetime的部分使用。首先说一下:1/17/07 has the format ...

关于applicationContext.xml cannot be opened because it does not exist的解决_KingBoxing的博客-程序员秘密

今天犯了一个错误,调了好久,就是加载applicationContext.xml文件时总是路径出错。我的做法是:在myeclipse中导入spring框架,然后会在src目录下生成applicationContext.xml配置文件。我手动添加了一个文件在项目下,就是这样创建了一个conf的文件夹,然后把applicationContext.xml拖拽到该文件夹下,一启动就包上

【C++】智能指针的思想与实现 auto_ptr scope_ptr share_ptr weak_ptr_David 's blog的博客-程序员秘密

一、背景简介为什么要有智能指针?因为c++没有自动回收机制,程序员手动new出的对象都需要手动的delete,在庞大的项目中,很难保证不出纰漏。我们知道对象的生成和销毁有析构函数(可以通过手动调用new)和构造函数(无需手动调用),所以智能指针就可以利用这个特性。简单总结,智能指针是一个栈对象,做的是指针的事情,指向堆上开辟的资源,在栈对象声明周期结束时,自动调用析构函数,释放堆上内存...

如何在STM32F10x_StdPeriph_Template基础上建立自己的MDK工程_少林达摩祖师的博客-程序员秘密

 在网上下载完毕STM3210x的库文件后,对其进行解压,里面有四个文件夹,以STM32F10x_StdPeriph_Lib_V3.5.0为例如下图所示: 图1 库文件解压后包含的文件夹其中,_htmresc文件夹是ST公司的图标,没用可以删除,而Release_Notes则是一个介绍该库文件相比之前版本有何改动的内容,新手可以忽略这个,而stm32f10x_stdperiph_l...

【归纳】C语言基础知识回顾_char b=\0_大秦长剑的博客-程序员秘密

    本章归纳C语言中疑难知识点,容易出错的用法及语法,特殊用法扩展等目录第一章  C语言概述第二章  算法——程序的灵魂第三章  数据的表现形式及其运算  3.1 数据类型及运算      3.1.1  常量和变量      3.1.2  数据类型      3.1.3  整型数据      3.1.4  字符型数据&amp;lt;1&amp;gt;关于罕见字符的输出:...

linux中如何安装windows_linux安装windows_Mr.o.j的博客-程序员秘密

      首先将windows镜像拷贝到根目录的ios下,这个文件可自行选择位置,我这里使用的是windows10,并且已经提前安装了虚拟机组件然后用root用户的身份在命令行输入virt-manager点击file下面的小电脑,然后选择刚刚拷贝的windows镜像,依次选择内存和cpu和硬盘的容量后,其可进入安装界面安装完毕即可在linux下使用windows...

随便推点

【翻译】将Python嵌入到另一个应用程序中--from官网_python功能文件放在一个程序里_鱼塘里的废柴少女的博客-程序员秘密

最近因为项目上需要用C++调用python语言训练好的模型,不得已开始查这方面的资料,正好看到官方文档的第五章将Python嵌入到另一个应用程序中有讲到这方面的知识,正好翻译一下,也贡献给有需要的小伙伴。(注意:本章中主要讲到的是将python嵌入C程序中)ps: 文中部分翻译可能不太恰当,欢迎小伙伴们进行批评指正~5.在另一款应用程序中植入python在之前的章节中已经讨论了如何扩展pyt...

众达说两化融合管理体系之程序文件之可持续竞争合作优势_明确战略可持续竞争合作优势_众达学堂的博客-程序员秘密

01公司发展战略的制定—战略制定概述  战略制定是指确定企业任务,认定企业的外部机会与威胁,认定企业内部优势与弱点,建立长期目标,制定供选择战略,以及选择特定的实施战略。是战略计划的形成过程。  战略制定是企业基础管理的一个组成部分,是科学化加艺术化的产物,需要不断完善。关于战略的定义  战略(STRATEGY)“STRATEGIC”一词意思是“极其重要的东西”,指“战略,战略学,策略,计谋”  1、军事上“战略是长远性的、全局性的,根本性的方针、谋略”“为赢得未..

虚拟列表渲染(不进行后台加载)_虚拟渲染_任钰的博客-程序员秘密

import { defineComponent, PropType, computed } from "vue";import "./style.less";import Service from "./virtual_list.service";export default defineComponent({ name: "VirtualList", props: { // 容器总高度 screenHeight: { type: Number,

面试->代码_面试代码_ssopp24的博客-程序员秘密

一.剑指offer代码鲁棒性(输入参数检查等)贯穿所有代码当中,不会特别强调. 1.赋值运算符函数注意:1.返回值类型为该类型引用(链式赋值),返回*this2.传入参数常量引用3.释放自身已有空间4.判断是不是自身赋值例:MyString& MyString::operator=( const MyString& str ){ if (

mysql 消息队列_一个简单的 MySQL 批量事务消息队列_Li小屋的博客-程序员秘密

基于 MySQL 的批量事务消息队列消息队列本质上是一个存储介质,通常是链表结构,不同的进程或线程可以向消息队列中写入或读取消息。消息队列的使用场景有很多,比如异步处理任务、应用解耦、流量削锋等等。通常我们使用消息队列,都是直接使用 MNS、RocketMQ、Kafka 等产品。但某些场景下这些产品也难以满足,或者使用起来成本比较高,比如:批量创建大量(比如 1 万条)消息,并且要么都写入,要么不...

UVA - 644 Immediate Decodability_吉尔伽美什_的博客-程序员秘密

#include #include #include using namespace std;int is_prefix(char *a,char *b){ int m,n,i; m=strlen(a),n=strlen(b); char *longer=m>=n?a:b; char *shorter=m<n?a:b; m=strlen(longe

推荐文章

热门文章

相关标签