数组形状操作|学习笔记

简介: 快速学习数组形状操作

开发者学堂课程【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 进行拉平。  

相关文章
|
7月前
|
测试技术 C++ 索引
【NumPy 数组副本 vs 视图、NumPy 数组形状、重塑、迭代】
【NumPy 数组副本 vs 视图、NumPy 数组形状、重塑、迭代】
利用矩阵进行平移,旋转,缩放等图像变换、创建第二个一模一样的图像并使之进行缩放等操作
利用矩阵进行平移,旋转,缩放等图像变换、创建第二个一模一样的图像并使之进行缩放等操作
|
Python
numpy重新学习系列(7)---如何用np.ones_like创建一个新的和原来array形状一样的,但是元素为1的新的array
numpy重新学习系列(7)---如何用np.ones_like创建一个新的和原来array形状一样的,但是元素为1的新的array
80 0
numpy重新学习系列(7)---如何用np.ones_like创建一个新的和原来array形状一样的,但是元素为1的新的array
|
机器学习/深度学习 存储 索引
NumPy中的广播:对不同形状的数组进行操作
NumPy中的广播:对不同形状的数组进行操作
84 0
NumPy中的广播:对不同形状的数组进行操作
|
Java 索引
Java数组(3)--二维(多维)数组
Java数组(3)--二维(多维)数组
95 0
Java数组(3)--二维(多维)数组
|
Python
【Numpy总结】第二节:Numpy 的属性与形状变换
在 NumPy中,每一个线性的数组称为是一个轴(axis),也就是维度(dimensions),维度的数量称为秩(rank);比如说,二维数组相当于是两个一维数组,即 二维数组有两个轴,秩为2 。 <font color=blue > 重点:很多时候可以声明 axis。 axis=0,表示沿着第 0 轴进行操作,即对每一列进行操作; axis=1,表示沿着第 1 轴进行操作,即对每一行进行操作。
83 0
【Numpy总结】第二节:Numpy 的属性与形状变换
|
机器学习/深度学习 算法
二维矩阵转换(多种遍历方法)
二维矩阵转换(多种遍历方法)
|
开发者 索引 Python
切片索引与形状修改| 学习笔记
快速学习切片索引与形状修改
以字型为例,一维表示的二维数组矩阵,旋转90、-90
以字型为例,一维表示的二维数组矩阵,旋转90、-90
123 0
|
Python
03 numpy 修改形状、数组运算、广播
将100个数改成10*10的形状 np1 = np.arange(0,100,1) np1 array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 2...
940 0