当前位置:   article > 正文

改变数组形状(reshape、transpose)--numpy_reshape transpose

reshape transpose

1. reshape()函数

1.1 函数功能

在不改变数组数据的情况下,更改数组的形状

1.2 函数语法

reshape(a, newshape, order='C')
  • 1

1.3 函数参数与示例

1.3.1 参数:a与newshape

参数含义
a要改变形状的数组
newshape数组形状参数,取值为整数或整数组成的元组;这个形状所需的数据个数应与数组a中数据个数相同。当取值为整数时,转换为一维数组;取值为元组时,转换为对应形状的数组;若想转换为一维数组,除了使用数组a大小(size)的整数还可以使用值-1,这时将根据数组推断长度并转换
1) 将一维数组转换为二维
a = np.arange(8)
print('原始数组a:', a, sep='\n')
# 改变数组形状为(4,2)
a1 = np.reshape(a, (4, 2))
print('转换为(4,2)的数组a1:', a1, sep='\n')
  • 1
  • 2
  • 3
  • 4
  • 5

在这里插入图片描述

2) 将二维数组转换为一维数组
b = np.array([[1, 2, 3], [4, 7, 8]])
print('数组b: ', b, sep='\n')
# 将b转化为一维数组
# 1.方法一:形状为原始数组size的整数
b1 = np.reshape(b, 6)
print('转换为一维数组的b1: ', b1, sep='\n')
# 2. 方法二: 形状设置为-1
b2 = np.reshape(b, -1)
print('转换为一维数组的b1: ', b2, sep='\n')
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

在这里插入图片描述

1.3.2 参数: order

参数含义
a要改变形状的数组
newshape数组形状参数,取值为整数或整数组成的元组;这个形状所需的数据个数应与数组a中数据个数相同。当取值为整数时,转换为一维数组;取值为元组时,转换为对应形状的数组;若想转换为一维数组,除了使用数组a大小(size)的整数还可以使用值-1,这时将根据数组推断长度并转换
order读取数组a的方式。默认采用“C”方式。取值为C时,读取和写入数据先把最后轴读完然后依次向第一轴;取值为F时,先将第一轴读完/写完,然后第二轴,依次进行到最后一轴;取值为A时,表示读取和写入的方式与内存中数组a的存储方式一致;order的取值既规定了读取方式也规定了写入方式
1) 将二维数组转换为一维数组
import numpy as np

c = np.array([[[1, 2, 3], [4, 7, 8]], [[11, 12, 13], [14, 17, 18]]])
print('数组c:', c, sep='\n')
c1 = np.reshape(c, 12, order='C')
print('以C的方式读取转换后的数组c1:', c1, sep='\n')

c2 = np.reshape(c, 12, order='F')
print('以F的方式读取转换后的数组c2:', c2, sep='\n')

# c2 = np.reshape(c1,(2,6),order='F')
# print('输出数组c2: ',c2,sep='\n')
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

在这里插入图片描述

2) 将一维数组转换为二维数组
d = np.arange(0, 12)
print('数组d: ', d, sep='\n')
d1 = np.reshape(d, (4, 3), order='C')
print('以C的方式写入数据得到数组d1: ', d1, sep='\n')
d2 = np.reshape(d, (4, 3), order='F')
print('以C的方式写入数据得到数组d2: ', d2, sep='\n')
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

在这里插入图片描述

3) 三维数组转换为二维数组
import numpy as np

c = np.array([[[1, 2, 3], [4, 7, 8]], [[11, 12, 13], [14, 17, 18]]])
print('数组c:', c, sep='\n')
c1 = np.reshape(c, (6, 2), order='C')
print('以C的方式读取转换后的数组c1:', c1, sep='\n')

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

order取值为C ,以最后一个轴axis=2优先的方向读取和写入数据
在这里插入图片描述

order取值为F ,以第一个轴axis=0优先的方向读取和写入数据


c2 = np.reshape(c, (6, 2), order='F')
print('以C的方式读取转换后的数组c2:', c2, sep='\n')
  • 1
  • 2
  • 3

在这里插入图片描述

1.4 返回值

返回指定形状的数组

2. transpose()函数

2.1 函数功能

返回轴转置的数组,对于一维数组转置之后返回原数组相同的view数组;对于二维数组,就是矩阵转置,m行n列,转换为n行m列;对于三维及以上数组,需要看是否指定轴

2.2 函数语法

numpy.transpose(a, axes=None)
  • 1

2.3 函数参数与示例

含义参数
a要转置的数组
axes取值为None或者没有参数,新数组形状为原数组轴的顺序反转 ;取值为元组
1) 不指定axes,数组反转
import numpy as np

c = np.array([[[1, 2, 3], [4, 7, 8]], [[11, 12, 13], [14, 17, 18]]])
print('数组c(2x2x3):', c, sep='\n')
# 1. 无输入参数
c1 = c.transpose()  
print('以C的方式读取转换后的数组c1(3x2x2):', c1, sep='\n')

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

在这里插入图片描述
在这里插入图片描述

2) 指定轴的顺序
import numpy as np

c = np.array([[[1, 2, 3, 0], [4, 7, 8, 9], [1, 1, 1, 1]],
              [[11, 12, 13, 10], [14, 17, 18, 15], [2, 2, 2, 2]]])
print('数组c(2x3x4):', c, sep='\n')
# 1. 无输入参数
c1 = np.transpose(c, (1, 2, 0))
print('以C的方式读取转换后的数组c1(3x4x2):', c1, sep='\n')

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

在这里插入图片描述

2.4 返回值

转置后的数组,该数组是原数组的view。与原数组与转置后的数组是不同的对象,但是共享同一块儿内存区域,改变转置数据的值原始数组也会改变。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/154127
推荐阅读
相关标签
  

闽ICP备14008679号