reshape是改变原有数组/矩阵维度的方法,可以很容易的将一维数组转化为多维数组以及矩阵等。
1. 一维数组转化为多维数组
将一维数组转化为多维数组,方法为,其中num1和num2是指定多维数组的一个维度,具体见下方示例。
上面的示例中,通过将一维数组arr转化为的一个多维数组;同时,通过参数可以指定矩阵的排布方式,C为按行排列,F为按列排布
2. 一维数组转化为多维矩阵
在第一部分,通过语句将一维数组转化为多维数组(一维矩阵),如果将参数改为,就可以将一维数组转化为num1维的num2 x num3矩阵,示例如下:
上面的示例中,将一维数组转化为多维矩阵,该矩阵为2维,每维矩阵均为3 x 3。
3. 多维数组、矩阵的降维
既然一维数组可以通过方法转化为多维的数组或矩阵,当然也可以通过降维的方法将多维的数组或矩阵转化为一维数组,方法为和。
原始矩阵:
flatten方法:
ravel方法:
从上面的示例可以看出,ravel和flatten两个命令都可以实现多维数据的降维,输出结果也完全一致,但是二者转化模式并不一样:ravel只是转化原有的多维数据,转化后的一维数组数据指向的还是原有数据,当修改转化后的一维数组时,原有数组也会发生变化;对于flatten,是将数据拷贝一份输出,修改降维后的一维数组不会改变原有的数据,具体见下方示例。
从上面可以看到,通过修改一维数组第二个值后,原始数组在该位置的数值也发生了变化,而通过修改后原有的数组没有变化,这点在处理数据时应该多加注意。
参考书籍:
Python for Data Analysis. Data Wrangling with Pandas, NumPy, and IPython (2017, O’Reilly)
领取专属 10元无门槛券
私享最新 技术干货