要访问或修改ndarray数组中的元素,可以使用数组切片/索引。

如前所述,ndarray数组索引从0开始。

使用切片访问数组,首先通过内置slice函数创建一个切片对象,该对象存储了创建时传入的startstopstep参数,把这个切片对象传给数组,我们就可以提取数组的一部分(切片)返回。

一维数组

示例

import numpy as np
a = np.arange(10)
s = slice(2,7,2)
print(a[s])

输出

[2  4  6]

上面的例子中,首先使用arange()函数创建ndarray数组,然后定义一个切片对象,它的startstopstep值分别是2、7和2。当把这个切片对象传递给ndarray数组时,会从数组中提取一部分返回,返回部分的索引从2到7,步长2。

可以直接向ndarray数组传入start:stop:step格式的切片参数,效果相同。

示例

import numpy as np
a = np.arange(10)
b = a[2:7:2]
print(b)

输出

[2  4  6]
  • [i] 如果只放一个参数,则返回与索引对应的单个项。
  • [:i] 如果在前面插入:,则从该索引之前的所有项都将被提取。
  • [start:stop] 如果使用了两个参数,中间用:分隔,则使用默认步骤1,提取两个索引(不包括stop)之间的项。

示例

单项切片

import numpy as np
a = np.arange(10)
b = a[5]
print(b)

输出

5

示例

从索引之后切片

import numpy as np
a = np.arange(10)
print(a[2:])

输出

[2  3  4  5  6  7  8  9]

示例

从索引之前切片

import numpy as np
a = np.arange(10)
print(a[:2])

输出

[0 1]

示例

在索引之间切片

import numpy as np
a = np.arange(10)
print(a[2:5])

输出

[2  3  4]

上述规则也适用于多维数组。

多维数组

示例

import numpy as np
a = np.array([[1,2,3],[3,4,5],[4,5,6]])
print(a) # 切片从索引开始
print('a[1:]切片 ')
print(a[1:])

输出

[[1 2 3]
[3 4 5]
[4 5 6]] a[1:]切片
[[3 4 5]
[4 5 6]]

切片还可以包括省略号(…),表示在该维度上选择全部。

示例

# 演示数组
import numpy as np
a = np.array([[1,2,3],[3,4,5],[4,5,6]]) print ('数组:')
print (a)
print ('\n') # 返回一个数组,由第二列中的项目组成
print ('第二列中的项目是:')
print (a[...,1])
print ('\n') # 返回第二行
print ('第二行中的项目是:')
print (a[1,...])
print ('\n') # 返回第一列之后的项目
print ('第一列之后的项目:')
print (a[...,1:])

输出

数组:
[[1 2 3]
[3 4 5]
[4 5 6]] 第二列中的项目是:
[2 4 5] 第二行中的项目是:
[3 4 5] 第一列之后的项目:
[[2 3]
[4 5]
[5 6]]

NumPy 数组切片的更多相关文章

  1. Numpy数组对象的操作-索引机制、切片和迭代方法

    前几篇博文我写了数组创建和数据运算,现在我们就来看一下数组对象的操作方法.使用索引和切片的方法选择元素,还有如何数组的迭代方法. 一.索引机制 1.一维数组 In [1]: a = np.arange ...

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

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

  3. numpy数组之读写文件

    目录 通过 numpy 读写 txt 或 csv 文件 通过 numpy 读写 npy 或 npz 文件 读写 npy 文件 读写 npz 文件 通过 h5py 读写 hdf5 文件 简单读取 通过切 ...

  4. NumPy 数组迭代

    章节 Numpy 介绍 Numpy 安装 NumPy ndarray NumPy 数据类型 NumPy 数组创建 NumPy 基于已有数据创建数组 NumPy 基于数值区间创建数组 NumPy 数组切 ...

  5. NumPy 数组创建

    章节 Numpy 介绍 Numpy 安装 NumPy ndarray NumPy 数据类型 NumPy 数组创建 NumPy 基于已有数据创建数组 NumPy 基于数值区间创建数组 NumPy 数组切 ...

  6. numpy数组的索引和切片

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

  7. Numpy入门(二):Numpy数组索引切片和运算

    在Numpy中建立了数组或者矩阵后,需要访问数组里的成员,改变元素,并对数组进行切分和计算. 索引和切片 Numpy数组的访问模式和python中的list相似,在多维的数组中使用, 进行区分: 在p ...

  8. 在python&numpy中切片(slice)

     在python&numpy中切片(slice) 上文说到了,词频的统计在数据挖掘中使用的频率很高,而切片的操作同样是如此.在从文本文件或数据库中读取数据后,需要对数据进行预处理的操作.此时就 ...

  9. numpy数组、向量、矩阵运算

    可以来我的Github看原文,欢迎交流. https://github.com/AsuraDong/Blog/blob/master/Articles/%E6%9C%BA%E5%99%A8%E5%AD ...

随机推荐

  1. 9.2.1 hadoop mapreduce任务输出的默认排序

    任务的默认排序 MapTask和ReduceTask都会默认对数据按照key进行排序,不管逻辑上是否需要.默认是按照字典顺序排序,且实现该排序的方法是快速排序.但是map和reduce任务只能保证单个 ...

  2. 注意重写类的equals()方法

    注意在java中在比较引用类型时==和原生的equals()方法比较的都是看它们否是同一个对象(说的更直白一点就是他们在内存的位置是否是一样的),但我们在真实世界中关注的往往只是其中的某个属性是否相等 ...

  3. Day3-M-Cable master POJ1064

    Inhabitants of the Wonderland have decided to hold a regional programming contest. The Judging Commi ...

  4. Codeforces Round #199 (Div. 2) D. Xenia and Dominoes

    把 'O' 看成 'X',然后枚举它的四个方向看看是否能放,然后枚举 $2^4$ 种可能表示每种方向是否放了,放了的话就标成 'X',就相当于容斥,对于新的图去dp. dp就是铺地砖,行用二进制来表示 ...

  5. JAVA(windows)安装教程

    JAVA(windows)安装教程 一.下载: https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133 ...

  6. 蓝牙 BLE 协议学习: 000-有关概念介绍

    背景 在学校内就用过蓝牙技术参加过比赛(并拿了奖):而蓝牙作为物联网中比较常见的协议,有必要进行深入的学习.此后的文章会以 ble(v4.0) 进行学习. 介绍 蓝牙技术最初由电信巨头爱立信公司于 1 ...

  7. 使用six库将Python2的项目完全转移到python3

    SIX是用于python2与python3兼容的库. 它存在的目的是为了拥有无需修改即可在Python 2和Python 3上同时工作的代码.话虽这么说,但是这并不代表在Python 3中引用该库就可 ...

  8. zabbix 监控linux tcp连接数

    zabbix 监控linux tcp连接数 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.TCP的状态概述 1>.端口状态转换 2>.TCP 三次握手 3>. ...

  9. OS、浏览器排名:Win10狂飙、Chrome逆天

    根据 Netmarketshare公布的最新数据,2019年7月,Windows 10系统市场份额获得显著增长,市场份额创下新高:Windows 7则进一步衰退,份额下滑高达3.6%,这也是其历史上最 ...

  10. solus linux 中文输入法

    默认用ibus输入框架,安装ibus-libpinyin sudo eopkg install ibus-libpinyin ibus 安装好后重启 在系统设置 -区域和语言中添加中文,(记得自己设置 ...