数组形状操作|学习笔记

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

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

相关文章
|
测试技术 C++ 索引
【NumPy 数组副本 vs 视图、NumPy 数组形状、重塑、迭代】
【NumPy 数组副本 vs 视图、NumPy 数组形状、重塑、迭代】
|
3月前
|
机器学习/深度学习 PyTorch 算法框架/工具
探索PyTorch:张量的类型转换,拼接操作,索引操作,形状操作
探索PyTorch:张量的类型转换,拼接操作,索引操作,形状操作
|
8月前
数组的形状
【5月更文挑战第6天】数组的形状。
45 1
|
8月前
|
存储 索引 Python
深入解析NumPy数组的形状与重塑
【4月更文挑战第17天】本文深入解析了NumPy数组的形状和重塑。数组形状是表示数组维度和大小的元组,可通过`shape`属性获取。重塑允许改变数组形状而不改数据,需保证元素总数不变。`reshape`方法用于重塑,其中`-1`可让NumPy自动计算尺寸。注意重塑遵循元素总数相等、仅一次`-1`、内存存储顺序及返回新数组的原则。理解和掌握这些概念对高效使用NumPy处理多维数组至关重要。
|
8月前
|
JavaScript
函数形状的定义方式
函数形状的定义方式
96 0
|
Python
numpy重新学习系列(7)---如何用np.ones_like创建一个新的和原来array形状一样的,但是元素为1的新的array
numpy重新学习系列(7)---如何用np.ones_like创建一个新的和原来array形状一样的,但是元素为1的新的array
121 0
numpy重新学习系列(7)---如何用np.ones_like创建一个新的和原来array形状一样的,但是元素为1的新的array
|
Python
numpy重新学习系列(5)---如何用np.zeros_like创建一个新的和原来array形状一样的,但是元素为0的新的array
numpy重新学习系列(5)---如何用np.zeros_like创建一个新的和原来array形状一样的,但是元素为0的新的array
137 0
numpy重新学习系列(5)---如何用np.zeros_like创建一个新的和原来array形状一样的,但是元素为0的新的array
|
索引
一个张量,在指定位置插入一个维度
可以使用torch.unsqueeze()函数在指定位置插入一个新的维度。该函数可接受两个参数:要插入维度的张量和要插入的位置索引。
231 0
|
PyTorch 算法框架/工具 索引
pytorch中,假设已经有了一个张量a,现在还有一个张量B,张量B为一维的张量,如何利用B张量的元素作为索引去检索a张量的元素?
可以使用PyTorch的索引操作符[]和张量的gather()方法来利用张量B的元素作为索引来检索张量a的元素。
233 0
|
机器学习/深度学习 存储 索引
NumPy中的广播:对不同形状的数组进行操作
NumPy中的广播:对不同形状的数组进行操作
134 0
NumPy中的广播:对不同形状的数组进行操作