【晕头晕脑的Python】Python中Reshape函数解析

Reshape()作用:

Reshape(),函数的作用就是将数据的按照既定的维度进行整理。

  • reshape(M,N):可以将数据整理为M X N的大小。
  • reshape(M, N)[:,:,:] :”[ ]“ ,方括号可以对而外的 M x N 维度的数据进行顺序的排布。

Reshape()实例说明:

初期数据及库准备:

import numpy as np  # 调用numpy库
# 设置一个1-18的列表
anchors = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18]
#将anchors由列表转换为数组的形式
anchors = np.array(anchors)

一维reshape() 为 二维

18个元素一维度数组,可以转换为2 x 93 X 6的二维数组

print(anchors.reshape([3,6]))  # 生成一个(3,6)的二维数组

print(anchors.reshape([2,9]))  # 生成一个(2,9)的二维数组

# print(anchors.reshape([3,3]))   # error,显示维度不匹配,无法生成
  • -anchors.reshape([3,6]):
    3,6的输出结果
  • anchors.reshape([2,9]):
    ]
  • anchors.reshape([3,3]):
    在这里插入图片描述
    现在得到了一个由维转换到二维的矩阵,但是发现想对现在这个矩阵的一些排布进行调整,就用到了reshape( )[ ] 中的**[ ]** 进行排序,

二维数组 reshape 切片,逆置

list的[]中有三个参数,用冒号分割 list[A:B:C]
A:相当于start_index,可以为空,默认是0 ----开始位置
B:相当于end_index,可以为空,默认是list.size()-----结束位置
C:步长,默认为1。步长为-1时,返回倒序原序列------每一步多走多远
ps:另外AB构成的区间是[A,B)的左闭右开区间,即B的值是取不到的,只会取到B-1的数

print(anchors.reshape([3,6])[:-1,:])
"""
-1表示最后一行或者一列,根据python的切片规则,[A:B]的切片包含A而不包含B,即是[A, B)的取值
原始结果为:
[[ 1  2  3  4  5  6]
 [ 7  8  9 10 11 12]
 [13 14 15 16 17 18]]
结果为:
[[ 1  2  3  4  5  6]
 [ 7  8  9 10 11 12]]
"""
  • 在两个维度上切片
print(anchors.reshape([3,6])[:-1,:-1])
"""
-1表示最后一行或者一列,根据python的切片规则,[A:B]的切片包含A而不包含B,即是[A, B)的取值
原始结果为:
[[ 1  2  3  4  5  6]
 [ 7  8  9 10 11 12]
 [13 14 15 16 17 18]]
结果为:
[[ 1  2  3  4  5]
 [ 7  8  9 10 11]]
"""
  • 按行逆置
print(anchors.reshape([3,6])[::-1,::])
"""
------------------------------------------------------------
> list的[]中有三个参数,用冒号分割 list[A:B:C]
> A:相当于start_index,可以为空,默认是0 ----开始位置
> B:相当于end_index,可以为空,默认是list.size()-----结束位置
> C:步长,默认为1。步长为-1时,返回倒序原序列------每一步多走多远
> ps:另外AB构成的区间是[A,B)的左闭右开区间,即B的值是取不到的,只会取到B-1的数

-----------------------------------------------------------
原始结果为:
[[ 1  2  3  4  5  6]
[ 7  8  9 10 11 12]
[13 14 15 16 17 18]]
结果为:
[[13 14 15 16 17 18]
[ 7  8  9 10 11 12]
[ 1  2  3  4  5  6]]
"""
  • 按列逆置
print(anchors.reshape([3,6])[::,::-1])
"""
------------------------------------------------------------
> list的[]中有三个参数,用冒号分割 list[A:B:C]
> A:相当于start_index,可以为空,默认是0 ----开始位置
> B:相当于end_index,可以为空,默认是list.size()-----结束位置
> C:步长,默认为1。步长为-1时,返回倒序原序列------每一步多走多远
> ps:另外AB构成的区间是[A,B)的左闭右开区间,即B的值是取不到的,只会取到B-1的数

-----------------------------------------------------------
原始结果为:
[[ 1  2  3  4  5  6]
[ 7  8  9 10 11 12]
[13 14 15 16 17 18]]
结果为:
[[ 6  5  4  3  2  1]
[12 11 10  9  8  7]
[18 17 16 15 14 13]]
"""

三维Reshape情况

三维情况与二维类似,可以创建验证。下面补充一种在reshape数值中有-1的情况,需要强调的一点就是:若reshape(-1,2),则会生成两列的数据,行数会由系统自动计算。

print(anchors.reshape([-1,2,3]))
"""
[[[ 1  2  3]
  [ 4  5  6]]

 [[ 7  8  9]
  [10 11 12]]

 [[13 14 15]
  [16 17 18]]]
"""
print(anchors.reshape([-1,3]))
"""
[[ 1  2  3]
 [ 4  5  6]
 [ 7  8  9]
 [10 11 12]
 [13 14 15]
 [16 17 18]]
"""
  • 5
    点赞
  • 48
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值