文章目录
- 数据分析.numpy.数组的形态转变
- 一、数组形状改变 --- reshape()
- 二、多维数组的展开
- 三、数组的组合
- 四、数组的分割
数据分析.numpy.数组的形态转变
一、数组形状改变 — reshape()
reshape()是数组对象中的方法,用于改变数组的形状。
形状变化是基于数组元素不能改变的,变成的新形状中所包含的元素个数必须符合原来元素个数。如果数组元素发生变化的时候,就会报错.
reshape函数生成的新数组和原始数组公用一个内存,也就是说,不管是改变新数组还是原始数组的元素,另一个数组也会随之改变.
返回顶部
二、多维数组的展开
ravel()函数直接将多维数组横向展开。
flatten()函数可以将多维数组横向展开,也可以纵向展开,只要多加个
参数即可。
‘F’
注意:上图有误,在flatten设置了’F’后可能忘记重新运行代码了,结果有误。以下图为基准。
返回顶部
三、数组的组合
竖直拼接: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]]
其他拼接方法~
行交换:数组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]]])]