教程|Python之Numpy ndarray 基本介绍 3
教程|Python之Numpy ndarray 基本介绍 2
知识点8. 基本的索引和切片
NumPy数组的索引是一个内容丰富的主题,因为选取数据子集或单个元素的方式有很多。一维数组很简单。从表面上看,它们跟Python列表的功能差不多:
如上所示,当你将一个标量值赋值给一个切片时(如arr[5:8]=12),该值会自动传播到整个选区。跟列表最重要的区别在于,数组切片是原始数组的视图。这意味着数据不会被复制,视图上的任何修改都会直接反映到源数组上。
作为例子,先创建一个arr的切片:
现在,当我修稿arr_slice中的值,变动也会体现在原始数组arr中:
如果你刚开始接触NumPy,可能会对此感到惊讶(尤其是当你曾经用过其他热衷于复制数组数据的编程语言)。由于NumPy的设计目的是处理大数据,所以你可以想象一下,假如NumPy坚持要将数据复制来复制去的话会产生何等的性能和内存问题。
注意:如果你想要得到的是ndarray切片的一份副本而非视图,就需要明确地进行复制操作,例如arr[5:8].copy()。
对于高维度数组,能做的事情更多。在一个二维数组中,各索引位置上的元素不再是标量而是一维数组:
因此,可以对各个元素进行递归访问,但这样需要做的事情有点多。你可以传入一个以逗号隔开的索引列表来选取单个元素。也就是说,下面两种方式是等价的:
在多维数组中,如果省略了后面的索引,则返回对象会是一个维度低一点的ndarray(它含有高一级维度上的所有数据)。因此,在2×2×3数组arr3d中:
arr3d[0]是一个2×3数组:
标量值和数组都可以被赋值给arr3d[0]:
相似的,arr3d[1,0]可以访问索引以(1,0)开头的那些值(以一维数组的形式返回):
虽然是用两步进行索引的,表达式是相同的:
知识点9. 切片索引
对于之前的二维数组arr2d,其切片方式稍显不同
可以看出,它是沿着第0轴(即第一个轴)切片的。也就是说,切片是沿着一个轴向选取元素的。表达式arr2d[:2]可以被认为是“选取arr2d的前两行”。
你可以一次传入多个切片,就像传入多个索引那样:
像这样进行切片时,只能得到相同维数的数组视图。通过将整数索引和切片混合,可以得到低维度的切片。
例如,我可以选取第二行的前两列:
相似的,还可以选择第三列的前两行:
注意,“只有冒号”表示选取整个轴,因此你可以像下面这样只对高维轴进行切片:
教程|Jupyter Notebook初级教程——迷死人的基础操作
教程|Jupyter Notebook基础教程——快捷键的使用
教程|Python之Numpy ndarray 基本介绍 1
教程|Python之Numpy ndarray 基本介绍 2
点击 了解更多 ,动手操作
— End —
- 七牛云存储Python SDK使用教程 - 基本介绍
- 简明pyton教程学习笔记 1-5 介绍+安装python+最初的步骤+基本概念+运算符与表达式
- Python教程:numpy的基本介绍
- python基础教程之基本数据类型和变量声明介绍
- python基础教程之基本数据类型和变量声明介绍
- python基础教程之基本内置数据类型介绍
- python基础教程之基本内置数据类型介绍
- Python中collections模块的基本使用教程
- 从变量到封装:一文带你为机器学习打下坚实的Python基础 By 机器之心2017年10月13日 10:43 本文整体梳理了 Python 的基本语法与使用方法,并重点介绍了对机器学习十分重要的且常
- Excel宏教程 (宏的介绍与基本使用)
- OpenCV-Python图像处理教程:图像基本操作
- Python的Urllib库的基本使用教程
- 简明 Python 教程 第1章 介绍 简介
- Python最基本的数据类型以及对元组的介绍
- 简明Python3教程 3.介绍
- Python图像处理库PIL的基本模块介绍
- Java API——RMIIO入门教程(1)基本介绍
- 基本教程篇--第八节PieSampleDemo.cs介绍
- 【Heritrix基础教程之2】Heritrix基本内容介绍
- Photoshop详细教程三之图层/文字/选择基本功能介绍