第四篇 numpy数组变换

1、数组重塑 #numpy.reshape
实质就是把一个已知的数组转换成自己需求的一个不同维度的数组,


import numpy as np
data1=[1,5,4,6,1,3,2,5,1,8]
data11=np.array(data1)      #生成一维数组
print('numpy生成的一维数组:')
print(data1)
print('原数组重塑成2行5列的新数组:')
data2=data11.reshape((2,5))   #将原数组重塑成2行5列的新数组
data3=data11.reshape((5,2))    #将原数组重塑成5行2列的新数组
print(data2)
print('原数组重塑成5行2列的新数组:')
print(data3)

结果如下:
第四篇 numpy数组变换_第1张图片
2、数据散开,数据扁平化 ravel flatten
np.reshape的逆运算

import numpy as np
arr=np.arange(10).reshape(5,2)  #生成一个5行2列的二维数组
print("原数组:")
print(arr)
arr1=arr.ravel()   #把arr中的数据站开出1维数组,使用ravel函
print('ravel函数处理之后的数组:')
print(arr1)
arr2=arr.flatten()    #把arr中的数据站开出1维数组,使用flatten函数
print('flatten函数处理之后的数组:')
print(arr2)

结果如下:
第四篇 numpy数组变换_第2张图片
3、数据合并
3.1 concatenate函数
该函数中除了输入需要合并的两个或多个数组外,还需要输入合并的方向,沿水平方向还是垂直方向(axis=0:?1)

import numpy as np
arr3=np.arange(12).reshape(3,4)
print("构造数组1:")
print(arr3)

arr31=np.arange(12,24).reshape(3,4)
print("构造数组2:")
print(arr31)

arr32=np.concatenate([arr3,arr31],axis=0)# 沿数组下边线合并 axis=0
print("沿数组下边线合并(垂直方向):")
print(arr32)

arr321=np.concatenate([arr31,arr3],axis=1)#沿数组右边线合并 axis=1
print("沿数组右边线合并(水平方向):")
print(arr321)

结果如下:
第四篇 numpy数组变换_第3张图片

3.2 np.vstack函数(水平相接 )
np.hstack函数(垂直面相接)

arr3=np.arange(12).reshape(3,4)
print("构造数组1:")
print(arr3)

arr31=np.arange(12,24).reshape(3,4)
print("构造数组2:")
print(arr31)

arr322=np.vstack((arr3,arr31))  #vertica 垂直的
print("使用np.vstack函数合并之后的数组:")
print(arr322)
print("使用np.hstack函数合并之后的数组:")
arr323=np.hstack((arr3,arr31)) # horizontal 水平的
print(arr323)

结果:
第四篇 numpy数组变换_第4张图片
对比3.1可知,concatenate中axis=0时和np.hstack函数的结果是一样的,axis=1时的结果跟np.vstack函数的结果相同,我们在使用的时候二者皆可使用,结果相同,能够达到的目的也是一样的。

4、数组拆分 split 拆分后为list类型
根据条件把一个大数组分成几个满足要求的小数组。

arr4=np.arange(12).reshape(6,2)
print("原数组:")
print(arr4)
arr41=np.split(arr4,[4,3])#将arr4数组拆分成
print("使用split函数拆分后的新数组:")
print(arr41)
print(type(arr41))#新数组的数据类型

结果如下:
第四篇 numpy数组变换_第5张图片
5、数组转置
transpose 需要传入轴编号组成的元组。
T 内置转置函数

arr5=np.arange(12).reshape(3,4)
print("原数组:")
print(arr5)
arr51=arr5.transpose((1,0))
print("垂直方向转置结果:")
print(arr51)

arr52=arr5.transpose((0,1))
print("水平方向转置结果:")#转置无效,和自身一样
print(arr52)
print('使用内置函数T函数转置结果:')
arr53=arr5.T
print(arr53)

结果如下:
第四篇 numpy数组变换_第6张图片
6、轴对换 swapaxes

arr6=np.arange(16).reshape((2,2,4))
print('原数组(三维数组):')
print(arr6)
arr61=arr6.swapaxes(1,2)
print('轴变换之后的数组:')
print(arr61)

结果:
第四篇 numpy数组变换_第7张图片

你可能感兴趣的:(numpy,python,经验分享,其他)