栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

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

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

Reshape函数解析
  • Reshape()作用:
  • Reshape()实例说明:
    • 一维reshape() 为 二维
    • 二维数组 reshape 切片,逆置
    • 三维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 9 及 3 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]):
  • 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]]
"""
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/269429.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号