在毕设中学习02——numpy多维数组的切片,形态变化,维度交换

在毕设中学习02——numpy多维数组的切片,形态变化,维度交换2022.5.21文章目录关于matplotlib.pyplotcv2工具python课本学习构建三维数组,并按照指定维度输出生成一组随机数,摆放为指定矩阵形式Python中range(start,stop,步长)生成指定范围,指定步长的一组数多维数组切片——过滤信息多维矩阵的维度顺序变换多维矩阵的切片多维矩阵的形态变化关于matplotlib.pyplotcv2工具两篇博客的学习文献学习python课本学习构建三维数组,并按照指定维度输出import numpy as np#a=np.

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

2022.5.22

构建三维数组,并按照指定维度输出

import numpy as np
#
a=np.arange(0,60,1,dtype=np.floating).reshape(3,4,5)
print(a)
print(a[0])
print(a[0][0])

第一个输出

[[[ 0. 1. 2. 3. 4.]
[ 5. 6. 7. 8. 9.]
[10. 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. 36. 37. 38. 39.]]

[[40. 41. 42. 43. 44.]
[45. 46. 47. 48. 49.]
[50. 51. 52. 53. 54.]
[55. 56. 57. 58. 59.]]]

第二个输出

[[ 0. 1. 2. 3. 4.]
[ 5. 6. 7. 8. 9.]
[10. 11. 12. 13. 14.]
[15. 16. 17. 18. 19.]]

第三个输出

[0. 1. 2. 3. 4.]

生成一组随机数,摆放为指定矩阵形式

a=np.random.randint(15,40,size=(10,10,3))
print(a)
print(a.size)

Python中range(start,stop,步长)

为什么Python中range(10)输出的是range(0, 10)?

因为range()函数返回的是生成器对象。
生成器对象直接打印出不来内容,只会返回对象信息。
想要看生成器具体会产生什么,可以使用list()、或者tuple()函数转换。

以 list()为例:list(range(10))
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

list(range(10)) #从0开始到10
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
list(range(1,11)) #从1开始到11
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
list(range(0,30,5)) #步长为 5
[0, 5, 10, 15, 20, 25]
list(range(0,30,3)) #步长为 3
[0, 3, 6, 9, 12, 15, 18, 21, 24, 27]
list(range(0,-10,-1)) #步长为负数时候为从第一个数往随后一个数(输出过程和正常的相比,在坐标轴上是反方向输出的)
[0, -1, -2, -3, -4, -5, -6, -7, -8, -9]

生成指定范围,指定步长的一组数

a=np.arange(1,20,2)

import numpy as np
a=np.arange(1,20,2)
print(type(a))
print(a)
print(list(a))

#输出
<class 'numpy.ndarray'>
[ 1  3  5  7  9 11 13 15 17 19]
[1, 3, 5, 7, 9, 11, 13, 15, 17, 19]

注意这个np.arange()方法的返回值是<class ‘numpy.ndarray’>类型的数据,不是列表

数据之间没有逗号,可以理解为是一个矩阵

所以针对这个返回可以输出其shape

可以重构其shape

print(a.shape)
print(a.reshape(2,5))

#输出
(10,)
[[ 1  3  5  7  9]
 [11 13 15 17 19]]

多维数组切片——过滤信息

import numpy as np

#按照表达式j*10+i,生成6*6矩阵
a=np.array( [[j*10+i for i in range(6)]for j in range(6)] )
print(a)
#多维数组的切片操作
print(a[2,3:5])
print(a[2:5,2:5])

#输出
[[ 0  1  2  3  4  5]
 [10 11 12 13 14 15]
 [20 21 22 23 24 25]
 [30 31 32 33 34 35]
 [40 41 42 43 44 45]
 [50 51 52 53 54 55]]

[23 24]

[[22 23 24]
 [32 33 34]
 [42 43 44]]

进程已结束,退出代码0

多维矩阵的维度顺序变换

假设 a 数组是shape为(7352, 9, 128, 1)的numpy数组

方法一:

如果想要数组变换形态,比如使它变成(9, 7352, 128, 1)可以使用transpose方法

b=a.transpose((1,0,2,3))
#解释:1-0-2-3指的就是变换数组的维度,明显正常的维度是0-1-2-3-4....
#此处:0-1交换了位置,也就是变换了第一维度和第二维度的顺序
#可用于改变数组形态方便神经网络输入

方法二:

a.swapaxes(ax1,ax2) 或者np.swapaxes(a,1,2)

多维矩阵的切片

  • 可以获取任意维度的任意片段数据

    比如这个a的第二维度的9表示数据有9个通道(就像RGB图像有3个通道)

    我只要第前三个通道的数据,可以这么写

    c=a[,[0:3],]
    c的形状就变成了(7352, 3, 128, 1)
    

    有时候需要跨通道获取数据比如我只要1,3,5,6四个通道的数据可以这么写

d=a[,[0,2,4,5],]
d的形状就变成了(7352, 4, 128, 1)

多维矩阵的形态变化

a.reshape(新的形状),返回新数组

a.resize(新的形状),改变原数组

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/168455.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 【已解决】Redis连接——Could not connect to Redis at 127.0.0.1:6379: Connection refused[通俗易懂]

    【已解决】Redis连接——Could not connect to Redis at 127.0.0.1:6379: Connection refused[通俗易懂]相信很多人很可能刚上手使用Redis时,很容易遇到的问题就是CouldnotconnecttoRedisat127.0.0.1:6379:Connectionrefused。由于只是记录bug解决,所以开门见山,宜春不多哔哔…其实原因很简单,这个问题一般是关闭了服务端导致客户端打不开,最简单快捷解决办法就是先开启服务端,再去连接客户端!如下:开启服务端需要先配置(redis.con…

  • python爬虫–爬取网易云音乐评论

    python爬虫–爬取网易云音乐评论

  • vue删除数组中某一元素_数组索引超出范围

    vue删除数组中某一元素_数组索引超出范围在前端开发中,我们经常需要对数组进行操作,增删改是经常的事情,那我们js中该如何删除指定的下标元素呢????我们用splice来操作1.定义和用法splice()方法用于添加或删除数组中的元素。注意:这种方法会改变原始数组。数组中添加新元素:varfruits=[“Banana”,”Orange”,”Apple”,”Mango”];fruits.splice(2,0,”Lemon”,”Kiwi”);fruits输出结果:Banana,Orange,Le.

  • SMO算法笔记及个人理解

    SMO算法笔记及个人理解SMO算法介绍SMO算法是一种启发式算法,其基本思路是:如果所有变量的解都满足此优化问题的KKT条件,那么这个最优化问题的解就得到了。(KKT条件是该最优化问题的充分必要条件)。否则,选择两个变量,固定其他变量针对这两个变量构建一个二次规划问题。特点:将原始的二次规划问题分解为只含有两个变量的二次规划子问题,对子问题不断求解,使得所有的变量满足KKT条件包含两部分:1、求解两个变量二次规划的解析方法2、选择变量的启发式方法(1)第1个变量的选择:确定在当前的分类器中,违反K.

  • 明翰英国硕士常见词汇与固定搭配V1.2(持续更新)

    明翰英国硕士常见词汇与固定搭配V1.2(持续更新)下面的所有词汇与例句都是在英国留学期间,用到的、听到的、见到的,都是学校、教职人员、同学使用过的,对于高频词汇一定要掌握听说读写。

  • 9_商品详情页面解决方案

    9_商品详情页面解决方案需求分析当搜索商品时,显示商品的详细信息,同时选择不同的sku,进行不同的数据显示解决方案商家更改数据微服务,通过消息队列MQ监听到发生变化,微服务调用者使用Thymeleaf模板,生成相应的静态页面,储存在本地磁盘,当用户发送请求到微服务时,使用nginx技术进行相应页面的返回商品详情页面静态化1、建Module:supergo_page2、改pom<?xmlversion=”1.0″encoding=”UTF-8″?><projectxmlns=”http

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号