1.修改数组的形状:reshape和resize
reshape是将数组转换为指定的形状,然后返回转换后的结果,对于原数组的形状是不会发生改变的
resize是将数组转换成指定的形状,会直接修改数组本身,并不会返回任何值
(以下用一个具体实例说明)
import numpy as np #导入numpy库
a=np.random.randint(0,5,size=(3,4)) #生成一个随机整数在0到5之间且是三行四列的数组
a #打印输出
a.reshape(2,6) #用reshape函数修改数组形状,返回为修改后的两行六列数组
a #打印输出原来数组,reshape并没有改变原来数组的形状
a.resize(6,2) #resize修改原来数组为六行两列,并且不会返回任何值
a#打印输出原来数组可以发现,原来数组被修改为六行两列
2.对数组进行扁平化处理:flatten和ravel
flatten是将多维数组转换为一维数组后,然后将这个拷贝返回回去,后续对这个返回值修改不会影响原来数组。
ravel将多维数组转换为一维数组后,ravel()修改后面的数据会影响前面的数据。
总结:ravel()是引用操作,flatten()是复制操作。
(以下用一个具体实例说明)
import numpy as np #导入numpy库
a1=np.random.randint(0,10,size=(3,4)) #创建一个随机整数在0到10之间且三行四列的数组
a1 #输出打印
a1.flatten() #使用flatten函数进行扁平化,也即将二维数组转换为一维数组
a1.ravel() #使用ravel函数进行扁平化,即将二维数组转换为一维数组(可以发现,二者没有任何区别,都可以将多维数组转换为一维数组)
a2=a1.flatten() #将原数组扁平化,并且复制给a2
a2[0]=0 #对a2的第0个数值进行替换,将原来的6替换为0
print(a1) #打印输出原来的数组,发现扁平化后修改数组并不会对原数组的值进行替换
a3=a1.ravel() #使用ravel函数进行扁平化操作,且复制给a3
a3[0]=1 #同样对a3进行数值替换,将6替换为1
print(a1) #打印输出原来的数组a1,可以发现ravel函数扁平化后修改数组对原来的数组的值进行了替换,原来的数组6被替换为1