大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新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账号...