第四篇 numpy数组变换

1、数组重塑 #numpy.reshape
实质就是把一个已知的数组转换成自己需求的一个不同维度的数组,


import numpy as np
data1=[1,5,4,6,1,3,2,5,1,8]
data11=np.array(data1)      #生成一维数组
print('numpy生成的一维数组:')
print(data1)
print('原数组重塑成2行5列的新数组:')
data2=data11.reshape((2,5))   #将原数组重塑成2行5列的新数组
data3=data11.reshape((5,2))    #将原数组重塑成5行2列的新数组
print(data2)
print('原数组重塑成5行2列的新数组:')
print(data3)

结果如下:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20201029211050974.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80Mzg1ODEyNA==,size_16,color_FFFFFF,t_70#pic_cente
2、数据散开,数据扁平化 ravel flatten
np.reshape的逆运算

import numpy as np
arr=np.arange(10).reshape(5,2)  #生成一个5行2列的二维数组
print("原数组:")
print(arr)
arr1=arr.ravel()   #把arr中的数据站开出1维数组,使用ravel函
print('ravel函数处理之后的数组:')
print(arr1)
arr2=arr.flatten()    #把arr中的数据站开出1维数组,使用flatten函数
print('flatten函数处理之后的数组:')
print(arr2)

结果如下:
在这里插入图片描述
3、数据合并
3.1 concatenate函数
该函数中除了输入需要合并的两个或多个数组外,还需要输入合并的方向,沿水平方向还是垂直方向(axis=0:?1)

import numpy as np
arr3=np.arange(12).reshape(3,4)
print("构造数组1:")
print(arr3)

arr31=np.arange(12,24).reshape(3,4)
print("构造数组2:")
print(arr31)

arr32=np.concatenate([arr3,arr31],axis=0)# 沿数组下边线合并 axis=0
print("沿数组下边线合并(垂直方向):")
print(arr32)

arr321=np.concatenate([arr31,arr3],axis=1)#沿数组右边线合并 axis=1
print("沿数组右边线合并(水平方向):")
print(arr321)

结果如下:
在这里插入图片描述

3.2 np.vstack函数(水平相接 )
np.hstack函数(垂直面相接)

arr3=np.arange(12).reshape(3,4)
print("构造数组1:")
print(arr3)

arr31=np.arange(12,24).reshape(3,4)
print("构造数组2:")
print(arr31)

arr322=np.vstack((arr3,arr31))  #vertica 垂直的
print("使用np.vstack函数合并之后的数组:")
print(arr322)
print("使用np.hstack函数合并之后的数组:")
arr323=np.hstack((arr3,arr31)) # horizontal 水平的
print(arr323)

结果:
在这里插入图片描述
对比3.1可知,concatenate中axis=0时和np.hstack函数的结果是一样的,axis=1时的结果跟np.vstack函数的结果相同,我们在使用的时候二者皆可使用,结果相同,能够达到的目的也是一样的。

4、数组拆分 split 拆分后为list类型
根据条件把一个大数组分成几个满足要求的小数组。

arr4=np.arange(12).reshape(6,2)
print("原数组:")
print(arr4)
arr41=np.split(arr4,[4,3])#将arr4数组拆分成
print("使用split函数拆分后的新数组:")
print(arr41)
print(type(arr41))#新数组的数据类型

结果如下:
在这里插入图片描述
5、数组转置
transpose 需要传入轴编号组成的元组。
T 内置转置函数

arr5=np.arange(12).reshape(3,4)
print("原数组:")
print(arr5)
arr51=arr5.transpose((1,0))
print("垂直方向转置结果:")
print(arr51)

arr52=arr5.transpose((0,1))
print("水平方向转置结果:")#转置无效,和自身一样
print(arr52)
print('使用内置函数T函数转置结果:')
arr53=arr5.T
print(arr53)

结果如下:
在这里插入图片描述
6、轴对换 swapaxes

arr6=np.arange(16).reshape((2,2,4))
print('原数组(三维数组):')
print(arr6)
arr61=arr6.swapaxes(1,2)
print('轴变换之后的数组:')
print(arr61)

结果:
在这里插入图片描述

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小懵牛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值