一、修改数组维度的几种方法
reshape、resize、ravel、flatten、transpose、元组,下面一一介绍。
二、修改数组维度方法的实例
#NumPy数组:改变数组维度的几种方法 from numpy import * #arange生成一维数组,reshape改变数组的维度 b = arange(24).reshape(2,3,4) print(b) print("-----------------------1111--------------------------") #方法1:使用ravel改变数组维度。ravel返回数组的一个视图,修改视图的值,即会影响到原来的数组 b1 = b.ravel() print(b1) print("-----------------------2222--------------------------") #方法2:使用flatten改变数组维度。flatten会请求新的内存来保存结果,修改返回结果并不会影响原来的数组 b2 = b.flatten() print(b2) print("-----------------------3333--------------------------") b1[0] = 100 #b会改变,因为b1是通过ravel改变之后的数组 print(b) print("-----------------------4444--------------------------") b2[1] = 200 #b不会改变,因为b2是通过flatten改变之后的数组 print(b) print("-----------------------5555--------------------------") #方法3:使用元组改变数组维度 b.shape = (6,4) #生成6行4列的数组 print(b) print("-----------------------6666--------------------------") #方法4:transpose,将数组维度的行列进行翻转,数组本身并不翻转,但是修改翻转之后的数组值,会影响被翻转的数组 b3 = b.transpose() #b还是6行4列的数组,b3变为4行6列的数组 print(b3) print("-----------------------7777--------------------------") print(b) print("-----------------------8888--------------------------") b3[0][0] = 10000 #会影响b print(b) print("-----------------------9999--------------------------") #方法5:resize方法和reshape一样,但是resize会直接修改所操作的数组 #resize:会修改原来的数组;reshape:会生成新的内存空间保存生成的数组,即不会修改原来的数组 b.resize((2,12)) print(b)
print(b)
输出结果:
[[[ 0 1 2 3] [ 4 5 6 7] [ 8 9 10 11]] [[12 13 14 15] [16 17 18 19] [20 21 22 23]]] -----------------------1111-------------------------- [ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23] -----------------------2222-------------------------- [ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23] -----------------------3333-------------------------- [[[100 1 2 3] [ 4 5 6 7] [ 8 9 10 11]] [[ 12 13 14 15] [ 16 17 18 19] [ 20 21 22 23]]] -----------------------4444-------------------------- [[[100 1 2 3] [ 4 5 6 7] [ 8 9 10 11]] [[ 12 13 14 15] [ 16 17 18 19] [ 20 21 22 23]]] -----------------------5555-------------------------- [[100 1 2 3] [ 4 5 6 7] [ 8 9 10 11] [ 12 13 14 15] [ 16 17 18 19] [ 20 21 22 23]] -----------------------6666-------------------------- [[100 4 8 12 16 20] [ 1 5 9 13 17 21] [ 2 6 10 14 18 22] [ 3 7 11 15 19 23]] -----------------------7777-------------------------- [[100 1 2 3] [ 4 5 6 7] [ 8 9 10 11] [ 12 13 14 15] [ 16 17 18 19] [ 20 21 22 23]] -----------------------8888-------------------------- [[10000 1 2 3] [ 4 5 6 7] [ 8 9 10 11] [ 12 13 14 15] [ 16 17 18 19] [ 20 21 22 23]] -----------------------9999-------------------------- [[10000 1 2 3 4 5 6 7 8 9 10 11] [ 12 13 14 15 16 17 18 19 20 21 22 23]]