numpy形状操作(数组变形&数组转置&数组堆叠&split数组拆分)(4)


前言

python学习笔记—Numpy day7(仅供学习使用)


一、数组变形

reshape将原来的3行4列数组转换成了4行3列数组,如下图所示:
其次display比print输出会更加美观。
在这里插入图片描述

import numpy as np 
arr1 = np.random.randint(0,10,size = (3,4,5)) 
arr2 = arr1.reshape(12,5) # 形状改变,返回新数组 
arr3 = arr1.reshape(-1,5)# 自动“整形”,自动计算
#-1表示最后算,相当于x*5 = 4*5*3 计算出x=12

运行:
在这里插入图片描述

二、数组转置

下图中arr2为3个六行四列的数组,即三维数组,通过transpose通过axes用索引将数组中元素变成4个3行6列数组。具体转变办法,可以这样理解他0 =3 1= 6 2=4 然后axes中使用的是012的值,即可转变成功。

import numpy as np 
arr1 = np.random.randint(0,10,size = (3,5)) # shape(3,5) 
arr1.T # shape(5,3) 转置 两个效果是不相同的,shape转换相当于接龙,不是完全意义上的转置
arr2 = np.random.randint(0,10,size = (3,6,4)) # shape(3,6,4) 
np.transpose(arr2,axes=(2,0,1)) # transpose改变数组维度 shape(4,3,6)

运行:
在这里插入图片描述

1.

2.

三、数组堆叠

将数组堆叠到一起。
#concatenate中可以放很多个arr,列表就是个容器,可以装很多东西,此时在arr2后再放置arr1 or arr2都是可以的都可以合并在一起。
#concatenate 在后面不追加axis时默认是进行行合并,效果等同于axis=0.但是不追加axis时,当数据出现不能对其时如:一个三行五列的数组和一个三行四裂的数组进行合并时,就会报错。此时可用axis=1进行解决。因为他们的列的元素都是三个。
#axis默认值为0.代表行,axis=1代表列
axis=-1时表示倒着数

import numpy as np 
arr1 = np.array([[1,2,3]]) 
arr2 = np.array([[4,5,6]]) 
np.concatenate([arr1,arr2],axis = 0) 
# 串联合并shape(2,3) axis = 0表示第一维串联 输出为 
# array([[1, 2, 3], 
#        [4, 5, 6]]) 

np.concatenate([arr1,arr2],axis = 1) 
# shape(1,6) axis = 1表示第二维串联 输出为:array([[1, 2, 3, 4, 5, 6]]) 
np.hstack((arr1,arr2)) # 水平方向堆叠 输出为:array([[1, 2, 3, 4, 5, 6]]) 
np.vstack((arr1,arr2)) # 竖直方向堆叠,输出为: 
# array([[1, 2, 3], 
#        [4, 5, 6]])

四、split数组拆分

import numpy as np 
arr = np.random.randint(0,10,size = (6,5)) # shape(6,5) 
np.split(arr,indices_or_sections=2,axis = 0) # 在第一维(6)平均分成两份 
np.split(arr,indices_or_sections=[2,3],axis = 1) # 在第二维(5)以索引2,3为断点分割成 3份
np.vsplit(arr,indices_or_sections=3) # 在竖直方向平均分割成3份 
np.hsplit(arr,indices_or_sections=[1,4]) # 在水平方向,以索引1,4为断点分割成3份

#拆分中axis和合并的axis效果一样,0表示行,1表示列
其中spilt里只放数组和一个数字时,表示的是将数组平均分成几份。(就是数字的值)
下图中,nd【1,4,5】是指在第二行的上面切一刀,第五行的上面切一刀,第六行的上面切一刀。数组索引145对应行数为256.
在这里插入图片描述

五、

六、

七、

八、

九、

十、


总结

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

周小唁

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

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

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

打赏作者

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

抵扣说明:

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

余额充值