开发者学堂课程【Python 常用数据科学库:数组形状操作】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/546/detail/7467
数组形状操作
内容简介
一·数组形状操作
二·数组的连接
一·数组形状操作
数组中有一个重要特性,可以分为多个维度,有一维数组,二维数组,三维数组,甚至是更高维度数组。
可以对数组进行形状操作。例如:当我们输入
import numpy as tang_array=np. arange(10) tang_array
显示出来的结果就是
array([0, 1, 2, 3, 4, 5, 6, 7, 9])。
其中 arrange 相当于从0~10,包含左边,但是不包含右边,所以显示出来的有0但无10。
1·一维数组
只有一个数。例如,当我们输入 tang_array. Shape,
显示出来的结果是(10,)。因只有一个数,所以是一维数组。
2·二维数组
当我们对上个数组的 shape 值进行改写,我们输入 tang_array. shape=2,5
时,显示出来的是 array([0,1,2,3,4],[5,6,7,8,9])。 这就是二维数组,二维数组有两个维度。我们刚刚所得到的是一个两行五列的结构。除了上述情况,我们对reshape值进行改变也是可以的。例如,当我们输入 tang_array. reshape(1,10)
, 我们所得到的就是 array([[0,1,2,3,4,5,6,7,8,9]])。所以,数组有两个属性可以改变,一是直接改变 shape 值,另一个是改为 reshape 再进行改值。此外,数组的值大小不能改变,例如,当我们输入 tang_array. shape=(3,4)
时,就不能显示出结果。因为3*4=12,不等于10,已经改变数组的大小。
当我们想往原数组中新增加一个维度,我们需要在原信息中增加一个叫 np. newaxis 的维度。例如,当我们在上组一维数组的基础上,我们输入 tang_array=np. arrange(np. newaxis,:)
,所显示出来的就是 (1,10),此时该数组就变成了二维数组。若我们输入的是 tang_array=np. arrange(:,np. newaxis)
, 则显示出的结果就是(10,1)。若我们想继续增加新的维度,则可以按照上述方法一直往上加就可以了。例如,当我们输入 tang_array=np. arrange(:,np. newaxis,np. newaxis)
, 则所得结果就是(10,1,1)。以此来增加我们所需的维度。
当我们想去除多余的维度时,相当于给数组进行压缩。例如,当我们输入 tang_array=tang_array.squeeze()tang_array.shape
时,结果就由上述(10,1,1)变成了(10,)。因为空的轴对我们来说是无用的,所以压缩的作用就是去除多余的维度。
3·数组的转至
例如,当我们输入 tang_array.transpose()
, 所得到的结果就是array([[0,5],[1,6],[2,7],[3,8],[4,9]])。 由原先的两行五列,变成了五行两列,这就是转至,把行和列进行调换。我们也可以把单词 transpose 简化成字母T,所得结果也是一样的。
二·数组的连接
假设我们有两个数组,分别为
a=np.array([[123,456,134]],
所得结果是
array([[123,456,678],[3214,456,134]])
和
b=np.array([[1235,3124,432],[43,13,134]])
所得结果为
array([[1235,3124,432],[43,13,134]])。
现有一个
c=np.concatenate((a,b))
,所得结果是
array([[123,456,678],[3214,456,134],[1235,3124,432],[43,13,134]])
用来连接数组a和b。此方法是直接按照样本的维度顺序一行接着一行拼接而成。另一种方法就是指定一个维度进行拼接。例如c=np.concatenate((a,),axis=1)
,所得出的结果就是 array([[123,456,678,1235,3124,432],[3214,456,134,43,13,134]])。
1·Vstack 和 hstack 的两种操作:
(1)当我们输入 np. vstack((a,b)) 时,所显示出的就是 array([[123,456,678],[3214,456,134],[1235,3124,432],[43,13,134]])。
(2)当我们输入的是 np. hstack((a,b)) 时,所显示出来的就是array([[123,456,678,1235,3124,432],[3214,456,134,43,13,134]])。
例如输入数组 a,所得出的结果就是 array([[123,456,678],[3214,456,134]]),当我们想将数组 a 进行拉平,我们们可以输入 a.flatten()
,则显示出来的就是array([123,456,678,3214,456,134]);还有一种方法将数组 a 进行拉平,就是输入 a.ravel(), 则所得出的就是 array([123,456,678,3214,456,134])。上述两种方法都能将数组 a 进行拉平。