文章目录

  • NumPy库--数组的索引和切片
    • 1. 常用索引
    • 2. 布尔索引
    • 3. 值的替换

NumPy库–数组的索引和切片

1. 常用索引

获取某行的数据

# 1. 如果是一维数组
a1 = np.arange(0,29)
print(a1)
print(a1[1]) # 获取下标为1的元素,结果为1a1 = np.arange(0,24).reshape((4,6))
print(a1)
print(a1[1]) # 获取下标为1的行的数据,结果为[ 6  7  8  9 10 11]

连续获取某几行的数据

# 1. 获取连续的几行的数据
a1 = np.arange(0,24).reshape((4,6))
# a2 = np.random.randint(0,10,size=(4,6))
print(a1[0:2]) # 获取0行到1列的数据
# result:
[[ 0  1  2  3  4  5][ 6  7  8  9 10 11]]# 2. 获取不连续的几行的数据
print(a1[[0,2,3]])
# result:
[[ 0  1  2  3  4  5][12 13 14 15 16 17][18 19 20 21 22 23]]# 3. 也可以使用负数进行索引
print(a1[[-1,-2]])
# result:
[[18 19 20 21 22 23][12 13 14 15 16 17]]

获取某行某列的数据

a1 = np.arange(0,24).reshape((4,6))
print(a1[1,1]) # 获取1行1列的数据print(a1[0:2,0:2]) # 获取0-1行的0-1列的数据
print(a1[[1,2],[2,3]]) # 获取(1,2)和(2,3)的两个数据,又名花式索引

获取某列的数据

a1 = np.arange(0,24).reshape((4,6))
print(a1[:,1]) # 获取第1列的数据
print(a1[:,[1,3]]) # 获取第1列和第3列的数据

Summary

  1. 如果数组是一维的,那么索引和切片是跟python的列表是一样的。
  2. 如果是多维的,那么在中括号中,给两个值,两个值是通过逗号分隔的,逗号前面是行,逗号后面的是列。如果中括号中只有一个值,那么就是代表的是行。
  3. 如果是多维数组,那么行的部分和列的部分,都是遵循一维数组的方式,可以使用整形,切片,还可以使用中括号的形式来代表不连续的。比如a[[1,2],[3,4]]

2. 布尔索引

布尔运算也是矢量的:

a1 = np.arange(0,24).reshape((4,6))
print(a1<10) # 返回一个新的数组,这个数组中的值全部都是bool类型
>[[ True  True  True  True  True  True][ True  True  True  True False False][False False False False False False][False False False False False False]]

假如要将a1数组中所有小于10的数据全部提取出来:

a1 = np.arange(0,24).reshape((4,6))
a2 = a1 < 10
print(a1[a2]) # 取出全部小于10的元素

其中布尔运算可以有!===><>=<=以及&(与)|(或)

a1 = np.arange(0,24).reshape((4,6))
a2 = a1[(a1 < 5) | (a1 > 10)]
print(a2)

Summary

布尔索引是通过相同数组上的True还是False来进行提取的。提取的条件可以有多个,那么如果有多个,可以使用&来代表或,用|来代表或,如果有多个条件,那么每个条件要使用圆括号括起来。

3. 值的替换

利用索引,也可以做一些值得替换。把满足条件的位置的值替换成其他的值:

a1 = np.arange(0,24).reshape((4,6))
a1[3] = 0 # 将第三行的所有值都替换成0
print(a1)# result:
[[ 0  1  2  3  4  5][ 6  7  8  9 10 11][12 13 14 15 16 17][ 0  0  0  0  0  0]]

若需要指定特定的一组值:

a3 = np.random.randint(0,10,size=(3,5))
print(a3)
a3[1]=np.array([1,2,3,4,5])
print(a3)# result:
# 替换之前:
[[2 4 1 8 4][1 5 5 8 9][5 0 1 8 0]]
# 替换之后:
[[2 4 1 8 4][1 2 3 4 5][5 0 1 8 0]]

也可以使用条件索引来实现:

a1 = np.arange(0,24).reshape((4,6))
a1[a1 < 5] = 0 # 将小于5的所有值全部替换成0
print(a1)# result:
[[ 0  0  0  0  0  5][ 6  7  8  9 10 11][12 13 14 15 16 17][18 19 20 21 22 23]]

还可以使用函数来实现:

# where函数:
a1 = np.arange(0,24).reshape((4,6))
a2 = np.where(a1 < 10,1,0) # 把a1中所有小于10的数全部变成1,其余的变成0
print(a2)# result:
[[1 1 1 1 1 1][1 1 1 1 0 0][0 0 0 0 0 0][0 0 0 0 0 0]]# 用法拓展:
a3 = np.random.randint(0,10,size=(3,5))
print(a3)
result = np.where(a3<5)
result# result:a3:
[[6 1 8 5 0][1 4 1 2 1][5 0 5 4 2]]result:
(array([0, 0, 1, 1, 1, 1, 1, 2, 2, 2], dtype=int64),array([1, 4, 0, 1, 2, 3, 4, 1, 3, 4], dtype=int64))

Summary

  1. 可以使用索引或者切片来替换
  2. 使用条件索引来替换
  3. 使用where函数来实现,仅含一个参数的形式是返回满足条件的索引位置,含三个参数是返回替换后的数组。

NumPy库--数组的索引和切片相关推荐

  1. python数组索引和切片_python numpy数组的索引和切片的操作方法

    NumPy - 简介 NumPy 是一个 Python 包. 它代表 "Numeric Python". 它是一个由多维数组对象和用于处理数组的例程集合组成的库. Numeric, ...

  2. Numpy数组的索引与切片:取数组的特定行列

    0.前言 Numpy的数组除了可使用内置序列的索引方式之外,提供了更多的索引能力,如通过切片.整数数组和布尔数组等方式进行索引.这使得Numpy索引功能很强大,但同时也带来了一些复杂性和混乱性,尤其是 ...

  3. python numpy矩阵切片_Numpy数组的索引与切片和变形拼接分裂

    1.概述 今天我们来讲一下Numpy数组的索引与切片,numpy数组的索引与切片和Python中的切片与索引的作用相同,可以快速的取出数据,进行下一步的运用或者查看,但是两种切片还有一些不同的地方.另 ...

  4. c语言随机生成整数存放一维数组_文科生学 Python 系列 7: Numpy 数组/索引和切片...

    第四课:本课内容: • 0. 导入 NumPy 包 • 1. 创建 NumPy 数组 • 2. 索引和切片 • 3. 读取文件 • 4. 布尔型索引 • 5. 数组的运算 • 6. 常用函数举例 Nu ...

  5. 如何查看numpy库数组的:类型、数据类型、尺寸、形状、维度? (type、dtype、size、shape、ndim)

    import numpy as np a1 = np.array([1,2,3,4],dtype=np.complex128) print("a1:",a1) print(&quo ...

  6. 多维数组的索引与切片_Numpy库使用入门(二)数据的索引和切片

    BERT:ERNIE,咱们下个星期三第二节是啥课? ERNIE:我康康......(`・ω・´) >>> table[3][2] >>> 2 >>> ...

  7. 多维数组的索引与切片_「GCTT 出品」Go 系列教程——11. 数组和切片

    Go语言中文网,致力于每日分享编码知识,欢迎关注我,会有意想不到的收获! Go 系列教程是非常棒的一套初学者教程,入门就它了. 「GCTT 出品」Go 系列教程--1. 介绍与安装 「GCTT 出品」 ...

  8. 多维数组的索引与切片_SystemVerilog的那些数组

    在计算机编程语言中,集合类型(collection)的数据结构都是非常重要的.这里集合的概念指的是能够将多个数据对象整合到一起进行管理和操作的复合数据类型.数组(array),是比较重要的.基础的.具 ...

  9. numpy数组的索引和切片

    一维数组 一维数组 说明 arr[1:] 返回索引1到最后的数据(冒号前面是起,后面是止,冒号前面空,指最小0,后面放空就是到最后) arr[5:8 返回索引5到索引8(不包含)的数据 import ...

  10. Numpy学习-数组的索引

    import numpy as np arr1 = np.arange(2,14) print(arr1) #[ 2 3 4 5 6 7 8 9 10 11 12 13]#提取矩阵中某个索引的值 pr ...

最新文章

  1. 【组队学习】【31期】动手学数据分析
  2. PHP 一个可以过滤非法脚本的函数
  3. struts基本原理图
  4. Java 项目权威排名:Spring生态抢镜,Gradle战胜Maven排第2,点击查看更多...
  5. python序列化和反序列化_python反序列化免杀
  6. txt文件导入mysql--转
  7. JavaScript循环定时器的设置和取消
  8. 过年装X神器,快速获取 wifi 密码!
  9. 基于jetty9 编程构建嵌入式https 服务器
  10. MySQL(四)InnoDB中一棵B+树能存多少行数据
  11. 37. 重定向 21
  12. cvCanny() 边缘检测
  13. 知物由学 | Android 模拟点击研究,如何突围“黑灰产”的自动化作弊?
  14. IOS开发之——QQ主流框架(64)
  15. windows录屏_电脑如何录制屏幕?windows录屏软件哪个好?
  16. 读懂algebraic distances on graphs
  17. h5封装table表格 vue
  18. 【每日一题】输入年限返回现存猪的数量
  19. 鑫锘计算机软件公司欺骗员工,我们已经24小时没睡觉-(1)
  20. 统计学基础概念:总体(population)与样本(sample)

热门文章

  1. 小程序直播 OBS 画质_教你玩转微信小程序直播
  2. 阿里云容器服务Kubernetes之Jenkins X(2)-自动化CICD实践篇
  3. 实力封装:Unity打包AssetBundle(三)
  4. C# 访问MongoDB 通用方法类
  5. 浅谈我的UI设计之路
  6. Linux网络属性及其配置
  7. 爬虫之煎蛋网妹子图 大爬哦
  8. Xcode6无法安装VVDocumenter插件的解决方法
  9. jabberd2分析
  10. 企业信息化基本指标构成方案(试行)上