numpy中改变常见的几个函数:np.expand_dims, np.squeeze. ,np.reshape。
np.expand_dims():扩展数组的轴,在指定的结果位置插入一个或者多个新轴。
参数axis:代表扩展后的array维度,而不是输入array。
输出:输入数组的视图。
效果等价于在指定位置插入新的索引:np.newaxis或者None。
np.squeeze():缩小数组的shape
参数axis=None时,删除输入数组的全部大小为1的维度(轴),不为None时删除指定轴(前提是当前轴的维度大小=1)。
np.reshape(a, newshape, order='C'):固定数组元素值不变,改变数组的shape
在不改变数据的情况下,通过指定新shape,改变数据分布,即可能增加轴,也可能减少轴。
补充知识点:numpy中的copy和view不同返回机制:
(1)python中变量数据存储在计算机的一段连续(也可以通过指针串联,非连续存放)内存空间中,而变量实际存储的是这一段连续内存空间的首地址,即知道了内存首地址就能获取到变量的值,numpy的array是一种特殊的变量。
(2)比如"a=b;"这个语句,如果是copy机制则说明a和b的首地址不一样,a和b的数据存放在两个不同的内存空间,如果是view机制则说明a和b的首地址是一样的,a和b互为对方的别名而已,本质是同一个,改变其中一个,另一个也随之改变。
(3)view机制比copy机制能节省内存空间,因为不需要额外开辟相同的数据存放内存空间。
numpy中,shape的改变非常常见,需要根据需要动态改变shape,增加或者减少轴。