要访问或修改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. 一个Win32程序的进化------转载

    一个Win32程序的进化 转载 weixin_34273046 发布于2017-11-15 10:53:00 阅读数 10 收藏 展开 一.为什么要学Win32     要回答这个问题,我们就要先搞清 ...

  2. 暴强贴:从.NET平台调用Win32 API----转载

      水之真谛 关注 17人评论 27649人阅读 2007-02-28 17:03:47 作者:刘铁猛日期:2005-12-20关键字:C# .NET Win32 API 版权声明:本文章受知识产权法 ...

  3. Laradock 下安装Beast扩展

    laradock/php-fpm/Dockfile ########################################################################## ...

  4. PHP 三元运算符

    $a = $a ? $a : 1;//第一种 $a = $a ? : 1;//第二种 第二种写法从 PHP 5.3 引入,表示若 $a 返回值为真时,取 $a 的返回值. 此外,在 PHP7 中引入了 ...

  5. storm的JavaAPI运行报错

    报错:java.lang.NoClassDefFoundError: org/apache/storm/topology/IRichSpout 原因:idea的bug:本地运行时设置scope为pro ...

  6. CPU、内存、硬盘之间的关系

    要完完全全地讲清楚cpu.内存.硬盘之间的关系,博客的篇幅是不够的.这里简单的介绍以下它们之间的关系,抛砖引玉. 1.CPU即中央处理器,是英语“Central Processing Unit”的缩写 ...

  7. MySQL性能调优语句

    mysql>show global status; 可以列出MySQL服务器运行各种状态值 一.慢查询 mysql> show variables like '%slow%'; mysql ...

  8. sessionManager配置

    在sessionManager配置的时候,有两个属性, 在这个类中,cacheManager是要注入到sessionDao中的,但要求sessionDao实现CacheManagerAware接口 C ...

  9. CentOS7 部署 Jupyter Notebook

    socket.error: [Errno 99] Cannot assign requested address 修改这几处: 1.hostname 参考:https://www.cnblogs.co ...

  10. node - DeprecationWarning: Mongoose: `findOneAndUpdate()` and `findOneAndDelete()` without the `use

           1,  原因是因为:findOneAndUpdate()内部会使用findAndModify驱动,驱动即将被废弃,所以弹出警告!附上官方解释:Mongoose v5.5.8: Depre ...