【Python】数据分析.numpy.数组的形态转变

网友投稿 274 2022-11-06


【Python】数据分析.numpy.数组的形态转变

文章目录

​​数据分析.numpy.数组的形态转变​​

​​一、数组形状改变 --- reshape()​​​​二、多维数组的展开​​​​三、数组的组合​​​​四、数组的分割​​

数据分析.numpy.数组的形态转变

一、数组形状改变 — reshape()

reshape()是数组对象中的方法,用于改变数组的形状。形状变化是基于数组元素不能改变的,变成的新形状中所包含的元素个数必须符合原来元素个数。如果数组元素发生变化的时候,就会报错.

reshape函数生成的新数组和原始数组公用一个内存,也就是说,不管是改变新数组还是原始数组的元素,另一个数组也会随之改变.

​​返回顶部​​

二、多维数组的展开

ravel()函数直接将多维数组横向展开。flatten()函数可以将多维数组横向展开,也可以纵向展开,只要多加个​​‘F’​​参数即可。

注意:上图有误,在flatten设置了’F’后可能忘记重新运行代码了,结果有误。以下图为基准。

​​返回顶部​​

三、数组的组合

​​竖直拼接:np.vstack()​​​​水平拼接:np.hstack()​​​​concatenate(axis=0/1)​​

例题:

利用两种拼接方式将t1、t2拼接

import numpy as npt1 = np.arange(12).reshape((2,6))print(t1)# [[ 0 1 2 3 4 5]# [ 6 7 8 9 10 11]]t2 = np.array(range(12,24)).reshape((2,6))print(t2)# [[12 13 14 15 16 17]# [18 19 20 21 22 23]]#竖直拼接,注意竖直拼接的时候每一列代表的意义相同t1_=np.vstack((t1,t2))print(t1_)# [[ 0 1 2 3 4 5]# [ 6 7 8 9 10 11]# [12 13 14 15 16 17]# [18 19 20 21 22 23]]#水平拼接t2_=np.hstack((t1,t2))print(t2_)# [[ 0 1 2 3 4 5 12 13 14 15 16 17]# [ 6 7 8 9 10 11 18 19 20 21 22 23]]

​​其他拼接方法~​​

​​行交换:数组1[[x,y],:]=数组1[[y,x],:]​​​​列交换:数组1[:,[x,y]]=数组1[:,[y,x]]​​

例题:

假设t1、t2都是对不同两家店水果品种及存储量的记录,由于竖直拼接的时候每一列代表的意义相同,所以在t1、t2拼接前要进行列的交换:

​​t1["苹果","橘子","西瓜","榴莲","香蕉","葡萄"]​​​​t2["橘子","苹果","西瓜","榴莲","香蕉","葡萄"]​​

t2[:,[0,1]] = t2[:,[1,0]] #将t2的前两列进行交换print(t2)# [[13 12 14 15 16 17]# [19 18 20 21 22 23]]#类似于列的交换,行也可以进行交换t1[[0,1],:] = t1[[1,0],:] #将t1的一二两行进行交换print(t1)# [[ 6 7 8 9 10 11]# [ 0 1 2 3 4 5]]

​​返回顶部​​

四、数组的分割

​​竖直分割:np.vsplit()​​​​水平分割:np.hsplit()​​​​split(axis=0/1)​​​​dsplit()​​可以按照第三轴进行分割

# 数组的分割import numpy as npa = np.arange(24).reshape(4,6)print(a)#[[ 0 1 2 3 4 5]# [ 6 7 8 9 10 11]# [12 13 14 15 16 17]# [18 19 20 21 22 23]]print(np.hsplit(a,3))#[array([[ 0, 1],# [ 6, 7],# [12, 13],# [18, 19]]), array([[ 2, 3],# [ 8, 9],# [14, 15],# [20, 21]]), array([[ 4, 5],# [10, 11],# [16, 17],# [22, 23]])]print(np.vsplit(a,2))#[array([[ 0, 1, 2, 3, 4, 5],# [ 6, 7, 8, 9, 10, 11]]), array([[12, 13, 14, 15, 16, 17],# [18, 19, 20, 21, 22, 23]])]print(np.split(a,3,axis=1))#[array([[ 0, 1],# [ 6, 7],# [12, 13],# [18, 19]]), array([[ 2, 3],# [ 8, 9],# [14, 15],# [20, 21]]), array([[ 4, 5],# [10, 11],# [16, 17],# [22, 23]])]print(np.split(a,2,axis=0))#[array([[ 0, 1, 2, 3, 4, 5],# [ 6, 7, 8, 9, 10, 11]]), array([[12, 13, 14, 15, 16, 17],# [18, 19, 20, 21, 22, 23]])]print(np.split(a,[1],axis=0))#[array([[0, 1, 2, 3, 4, 5]]), array([[ 6, 7, 8, 9, 10, 11],# [12, 13, 14, 15, 16, 17],# [18, 19, 20, 21, 22, 23]])]c = np.arange(48).reshape(3,4,4)print(c)#[[[ 0 1 2 3]# [ 4 5 6 7]# [ 8 9 10 11]# [12 13 14 15]]# [[16 17 18 19]# [20 21 22 23]# [24 25 26 27]# [28 29 30 31]]# [[32 33 34 35]# [36 37 38 39]# [40 41 42 43]# [44 45 46 47]]]print(np.dsplit(c,2))#[array([[[ 0, 1],# [ 4, 5],# [ 8, 9],# [12, 13]],# [[16, 17],# [20, 21],# [24, 25],# [28, 29]],# [[32, 33],# [36, 37],# [40, 41],# [44, 45]]]), array([[[ 2, 3],# [ 6, 7],# [10, 11],# [14, 15]],# [[18, 19],# [22, 23],# [26, 27],# [30, 31]],# [[34, 35],# [38, 39],# [42, 43],# [46, 47]]])]np.dsplit(c,[3])#[array([[[ 0, 1, 2],# [ 4, 5, 6],# [ 8, 9, 10],# [12, 13, 14]], # [[16, 17, 18],# [20, 21, 22],# [24, 25, 26],# [28, 29, 30]], # [[32, 33, 34],# [36, 37, 38],# [40, 41, 42],# [44, 45, 46]]]),# array([[[ 3],# [ 7],# [11],# [15]], # [[19],# [23],# [27],# [31]], # [[35],# [39],# [43],# [47]]])]

​​返回顶部​​


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:【Ubuntu】Spark 伪分布式安装
下一篇:MyBatis中的表关联查询实现示例
相关文章

 发表评论

暂时没有评论,来抢沙发吧~