天天看点

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

文章目录

  • ​​数据分析.numpy.数组的形态转变​​
  • ​​一、数组形状改变 --- reshape()​​
  • ​​二、多维数组的展开​​
  • ​​三、数组的组合​​
  • ​​四、数组的分割​​

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

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

reshape()是数组对象中的方法,用于改变数组的形状。

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

【Python】数据分析.numpy.数组的形态转变
reshape函数生成的新数组和原始数组公用一个内存,也就是说,不管是改变新数组还是原始数组的元素,另一个数组也会随之改变.
【Python】数据分析.numpy.数组的形态转变

​​返回顶部​​

二、多维数组的展开

ravel()函数直接将多维数组横向展开。

flatten()函数可以将多维数组横向展开,也可以纵向展开,只要多加个​

​‘F’​

​参数即可。
【Python】数据分析.numpy.数组的形态转变

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

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

​​返回顶部​​

三、数组的组合

​竖直拼接:np.vstack()​

​​

​水平拼接:np.hstack()​

​concatenate(axis=0/1)​

例题:

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

import numpy as np

t1 = 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]]      
【Python】数据分析.numpy.数组的形态转变

​​其他拼接方法~​​

​行交换:数组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 np

a = 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]]])]