numpy索引

  • 前言
  • 一、主体内容
    • 课时七:索引切片与迭代
  • 二、第二章课后习题
  • 总结

前言

第二章numpy之前已经看了好多,准备查缺补漏,顺便做下作业,加油


提示:以下是本篇文章正文内容,下面案例可供参考

一、主体内容

课时七:索引切片与迭代

  1. 在对于numpy进行操作的时候返回的是数组的副本或者视图,如果想要改变不会对原数组发生改变,可以用numpy库里面的copy(numpy.ndarray.copy()
  2. 关于用[ ]和:来做索引的方法我记得还挺牢。就是要注意和range那种一样,包含star不包含stop处的。
  3. dots索引就是用...来表示足够多的引号
    比如x是一个维数组,然后x[1,2,...]表示的就是x[1,2,:,:,:]
  4. 整数数组索引:
第一、
x = np.array([1, 2, 3, 4, 5, 6, 7, 8])
c=[0,1,2]
print(x[c])   ## [1 2 3]
第二、
x = np.array([[11, 12, 13, 14, 15],[16, 17, 18, 19, 20],[21, 22, 23, 24, 25],[26, 27, 28, 29, 30],[31, 32, 33, 34, 35]])
r=[0,1,2]
print(x[c])
# [[11 12 13 14 15]
#  [16 17 18 19 20]
#  [21 22 23 24 25]]c = [2, 3, 4]
y=x[r,c]
print(y)
# [13 19 25]第三、
x = np.array([1, 2, 3, 4, 5, 6, 7, 8])
r = np.array([[0, 1], [3, 4]])
print(x[r])
# [[1 2]
#  [4 5]]第四、
x = np.array([[11, 12, 13, 14, 15],[16, 17, 18, 19, 20],[21, 22, 23, 24, 25],[26, 27, 28, 29, 30],[31, 32, 33, 34, 35]])r = np.array([[0, 1], [3, 4]])
print(x[r])
# [[[11 12 13 14 15]
#   [16 17 18 19 20]]
#
#  [[26 27 28 29 30]
#   [31 32 33 34 35]]]第五、
# 获取了 5X5 数组中的四个角的元素。
# 行索引是 [0,0] 和 [4,4],而列索引分别是 [0,4] 和 [0,4]。
#(也就是说这四个坐标分别是[0,0],[0,4],[4,0],[4,4])
r = np.array([[0, 0], [4, 4]])
c = np.array([[0, 4], [0, 4]])
y = x[r, c]
print(y)
# [[11 15]
#  [31 35]]第七、
import numpy as npx = np.array([[11, 12, 13, 14, 15],[16, 17, 18, 19, 20],[21, 22, 23, 24, 25],[26, 27, 28, 29, 30],[31, 32, 33, 34, 35]])y = x[0:3, [1, 2, 2]]
print(y)
# [[12 13 13]
#  [17 18 18]
#  [22 23 23]]
  1. 沿轴对数组进行索引:numpy. take(a, indices, axis=None, out=None, mode='raise')。这里面a就是被进行操作的数组。axis就是控制沿什么轴进行索引。比如为0就是沿着行,为1就是沿着列
import numpy as npx = np.array([1, 2, 3, 4, 5, 6, 7, 8])
r = [0, 1, 2]
print(np.take(x, r))
# [1 2 3]r = [0, 1, -1]
print(np.take(x, r))
# [1 2 8]x = np.array([[11, 12, 13, 14, 15],[16, 17, 18, 19, 20],[21, 22, 23, 24, 25],[26, 27, 28, 29, 30],[31, 32, 33, 34, 35]])r = [0, 1, 2]
print(np.take(x, r, axis=0))
# [[11 12 13 14 15]
#  [16 17 18 19 20]
#  [21 22 23 24 25]]r = [0, 1, -1]
print(np.take(x, r, axis=0))
# [[11 12 13 14 15]
#  [16 17 18 19 20]
#  [31 32 33 34 35]]r = [0, 1, 2]
c = [2, 3, 4]
y = np.take(x, [r, c])
print(y)
# [[11 12 13]
#  [13 14 15]]
  1. 布尔索引:简单

x = np.array([np.nan, 1, 2, np.nan, 3, 4, 5])
y = np.logical_not(np.isnan(x))  #这里面的logical_not()函数是逻辑非
print(x[y])
# [1. 2. 3. 4. 5.]x = np.array([[11, 12, 13, 14, 15],[16, 17, 18, 19, 20],[21, 22, 23, 24, 25],[26, 27, 28, 29, 30],[31, 32, 33, 34, 35]])
y = x > 25
print(y)
# [[False False False False False]
#  [False False False False False]
#  [False False False False False]
#  [ True  True  True  True  True]
#  [ True  True  True  True  True]]
print(x[x > 25])
# [26 27 28 29 30 31 32 33 34 35]  #转化为了一维数组
  1. 另一种遍历的方式:np.apply_along_axis(funcld,axis,arr):里面的funcld是引用什么函数,里面的axis是按照什么轴(如果为0就是往下,如果为1就是往右),然后arr就是对什么数组进行这个操作。要注意的是这里的funcld函数接收的是arr数组沿轴切的一维数组(也是ndarray类型的)
import numpy as np
x = np.array([[11, 12, 13, 14, 15],[16, 17, 18, 19, 20],[21, 22, 23, 24, 25],[26, 27, 28, 29, 30],[31, 32, 33, 34, 35]])#沿着行往下,每次将一行作为一维数组传入函数np.sum中
y = np.apply_along_axis(np.sum, 0, x)
print(y)  # [105 110 115 120 125]
#沿着列往右,每次将一列作为一维数组传入函数np.sum中
y = np.apply_along_axis(np.sum, 1, x)
print(y)  # [ 65  90 115 140 165]#下面两个就是按照不同的方向求平均值
y = np.apply_along_axis(np.mean, 0, x)
print(y)  # [21. 22. 23. 24. 25.]
y = np.apply_along_axis(np.mean, 1, x)
print(y)  # [13. 18. 23. 28. 33.]def my_func(x):return (x[0] + x[-1]) * 0.5
#每次传入my_func函数的是沿行切的一维数组
y = np.apply_along_axis(my_func, 0, x)
print(y)  # [21. 22. 23. 24. 25.]
#每次传入my_func函数的是沿列切的一维数组
y = np.apply_along_axis(my_func, 1, x)
print(y)  # [13. 18. 23. 28. 33.]

二、第二章课后习题

  1. 交换数组的第一列和第三列
arr = np.arange(9).reshape(3, 3)
a=arr[:,[2,1,0]]
#用了索引与切片的方法

总结

这一章不是很难。但最近有点忙,学校事情好多,这一章看了好久

阿里天池——numpy实践(第二章)相关推荐

  1. 阿里天池——Numpy实战

    文章目录 阿里天池--Numpy实战 一.数据集 二.导入鸢尾属植物数据集,保持文本不变. 三.求出鸢尾属植物萼片长度的平均值.中位数和标准差(第1列,sepallength) 四.创建一种标准化形式 ...

  2. 学习笔记 | Python编程从入门到实践 | 第二章变量和简单数据类型

    前言 小白记录自己学习python的学习贴,如有错误请大佬指正 第二章是变量和简单数据类型的学习. 关于变量 在程序中随时可以修改变量的值,python将始终记录变量的最新值 变量名只能包含字母.数字 ...

  3. 大型网站系统与Java中间件实践 第二章大型网站及其架构演进过程

    2.1什么是大型网站 通过第 1 章我们了解了分布式系统的相关基础知识, 大型网站是一种很常见的分布式系统,而本书重点要介绍的中间件系统也是在大型网站的架构变化中出现并发展的,那么我们很有必要从大型网 ...

  4. 深度学习理论与实践第二章作业-FNN手写数字识别

    命名格式:按照课程网站中的课后作业要求 1. 根据Course02课程中对全连接神经网络的讲解,将缺失的全连接神经网络中代码块补全,并完成一次训练 需要填充的部分已经在第一部分的全连接神经网络代码中用 ...

  5. 微信小程序全栈开发实践 第二章 微信小程序组件介绍及使用 -- 2.6 scroll-view组件,在小程序中如何实现滚动锚定,如何渲染一个滚动的长列表?

    scroll-view 是一个可以滚动的视图区域的容器组件. 一.重要属性 scroll-view 的滚动属性,实现了两套功能 左右或上下滚动 下拉更新 1.1 与滚动有关的属性: scroll-x ...

  6. 微信小程序全栈开发实践 第二章 微信小程序组件介绍及使用 -- 2.3 rich-text 组件,以及如何单击预览它的节点图片并保存

    一.rich-text组件 nodes: [{name: 'div',attrs: {class: 'div_class',style: 'line-height: 20px;padding:20px ...

  7. 微信小程序全栈开发实践 第二章 微信小程序组件介绍及使用 -- 2.9 页面链接组件,如何自定义一个导航栏?

    一.小程序中的导航组件 functional-page-navigator 仅在插件中有效,用于跳转到插件功能页. navigator 小程序标准的导航组件 小程序插件是对一些js接口.自定义组件或页 ...

  8. 微信小程序全栈开发实践 第二章 微信小程序组件介绍及使用 -- 2.10 image组件,如何实现图片懒加载?

    一.与image组件有关的技术问题 1.1 什么是WebP? webp是image组件的一个boolean属性,开启这个属性之后,代表url可以设置webp这种格式的图片.webP是一种同时提供了有损 ...

  9. 微信小程序全栈开发实践 第二章 微信小程序组件介绍及使用 -- 2.5 可移动容器及可移动区域,以及如何实现侧滑删除功能

    一.学习使用moveable-view与movable-area组件 1.1 关于元素的定位 static 静态定位 元素在页面流动的当前位置定位,这个时候它的top.left.right.botto ...

最新文章

  1. JAVA基础知识(5)
  2. oracle rac ora 12560,rac ORA-12541: TNS:no listener问题 非常急!!
  3. ASP VNext 开源服务容错处理库Polly
  4. oracle获取日期中日,关于ORACLE ERP中日记帐的借、贷对应的问题
  5. 这4个免费办公神器有多良心?用后就离不开,可惜一般人都不知道
  6. 在IDEA中玩转DEBUG模式,有BUG不会调试?不存在的。
  7. Hi3519内核配置uart串口
  8. CAD图层的使用小技巧
  9. 腾讯云数据库CDB介绍及数据库与应用数据库分析
  10. html图片垂直居中的方法,CSS图片垂直居中实现方法详解
  11. GoPhish钓鱼邮件
  12. 史上最全的sqlserver运维分析工具,汇总都在这里了,适合sqlserver的dba人员
  13. PTC指定位置安装许可服务器,proe野火3.0安装问题之“许可证管理已成功安装,但不能启动,请参阅日志文件..”我自己的解决方案(原...
  14. 今日小程序推荐:码农老黄历-看今天哪个方位BUG最少
  15. 计算机二级vb应用,计算机二级VB考试练习题及答案
  16. SEO写作的问题有哪些,重点又是什么呢
  17. Windows 7 开机自动拨号 常用的五种方
  18. telnet 126邮箱
  19. 【赠Home-Assistant初次安装的朋友】
  20. 深度学习与围棋 名词笔记(一)

热门文章

  1. AJAX file uploads in Rails using attachment_fu and responds_to_parent 1
  2. 底部导航图片与文字上下显示
  3. 我的世界进入服务器显示rBAB,我的世界1.12.x RBTrixel 二周目生存服务器
  4. 瑞星杀毒软件与oracle冲突,瑞星删除Oracle实例解决
  5. 苹果x出现绿线怎么修复_苹果手机屏幕触摸屏失灵怎么办?换屏哥来帮你修复...
  6. 【校招VIP】线上实习 推推 书籍详情模块 产品脑图周最佳
  7. #Python sklearn UCI-CTG数据做机器学习算法之GBDT(三分类)
  8. 职位名称:初级,罗马数字和难以捉摸的“ Python架构师”
  9. 哭唧唧!半年内使用过蚂蚁借呗、京东白条的 一律不给贷款?
  10. 支付宝刚开通2个月,芝麻分才552就开通了借呗,这是什么情况?