Numpy简易教程4——变换数组的形态

数据分析与应用(python)1---numpy数组计算基础 返回tuple,表示数组形状,对于n行m列的矩阵,形状为(n,m)A[5:1:-2] ----[5,2]之间,步长为2,倒着取数字。返回int,表示数组的元素总数,等于数组形状中各元素的积。A[3:5]----->[3,4),下标是3到4之间的数。返回int,表示数组的每个元素的存储空间(以B为单位)A[1:-1:2]----[1,8]之间,步长为2。(0,1,0.1)-----0.1是步长。从头开始到下标4结束-----[0,4]A[5]-----指的是下标为5的数。(0,1,5)------5是个数。 阅读详情

变换数组的形态

1. 改变数组的形状

在对数组进行操作时,经常要改变数组的维度。

在NumPy中,常用reshape函数改变数组的“形状”,也就是改变数组的维度。其参数为一个正整数元组,分别指定数组在每个维度上的大小。

reshape函数在改变原始数据的形状的同时不改变原始数据的值。
如果指定的维度和数组的元素数目不吻合,则函数将抛出异常。

案例:改变数组形状
# 创建一维数组
arr = np.arange(12) 
print('创建的一维数组为:',arr)
# 设置数组的形状
print('新的一维数组为:',arr.reshape(3,4))
# 查看数组维度
print('数组维度为:',arr.reshape(3,4).ndim) 
创建的一维数组为: [ 0  1  2  3  4  5  6  7  8  9 10 11]
新的一维数组为: [[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]]
数组维度为: 2

2. 展平数组

在NumPy中,可以使用ravel函数完成数组展平工作。flatten函数也可以完成数组展平工作。

ravel()返回的是原始数组的视图,原始数组本身并没有发生变化。flatten()会重新分配内存,完成一次从原始数据到新内存空间的深拷贝,但原始数组并没有发生任何变化。

案例:展平数组
arr = np.arange(12).reshape(3,4)
print('创建的二维数组为:',arr)
print('数组展平后为:',arr.ravel())
print('数组展平后为:',arr.ravel('F'))
创建的二维数组为: [[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]]
数组展平后为: [ 0  1  2  3  4  5  6  7  8  9 10 11]
数组展平后为: [ 0  4  8  1  5  9  2  6 10  3  7 11]
# 横向展平
print('数组展平为:',arr.flatten()) 
# 纵向展平
print('数组展平为:',arr.flatten('F')) 
数组展平为: [ 0  1  2  3  4  5  6  7  8  9 10 11]
数组展平为: [ 0  4  8  1  5  9  2  6 10  3  7 11]

3.组合数组

除了可以改变数组“形状”外,NumPy也可以对数组进行组合(堆叠)。组合主要有横向组合与纵向组合。可使用hstack函数、vstack函数以及concatenate函数来完成数组的组合。

横向组合是将ndarray对象构成的元组作为参数,传给hstack函数。
纵向组合同样是将ndarray对象构成的元组作为参数,只不过传给vstack函数。
concatenate函数也可以实现数组的横向组合和纵向组合,其中参数axis=1时按照横轴组合,参数axis = 0时按照纵轴组合。

案例:组合数组
import numpy as np
arr1 = np.arange(12).reshape(3,4)
print('创建的数组1为:',arr1)
arr2 = arr1*3
print('创建的数组2为:',arr2)

print('横向组合为:',np.hstack((arr1,arr2)))  #hstack函数横向组合
print('纵向组合为:',np.vstack((arr1,arr2)))  #vstack函数纵向组合
print('横向组合为:',np.concatenate((arr1,arr2),axis = 1))  #concatenate函数横向组合
print('纵向组合为:',np.concatenate((arr1,arr2),axis = 0))  #concatenate函数纵向组合
创建的数组1为: [[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]]
创建的数组2为: [[ 0  3  6  9]
 [12 15 18 21]
 [24 27 30 33]]
横向组合为: [[ 0  1  2  3  0  3  6  9]
 [ 4  5  6  7 12 15 18 21]
 [ 8  9 10 11 24 27 30 33]]
纵向组合为: [[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]
 [ 0  3  6  9]
 [12 15 18 21]
 [24 27 30 33]]
横向组合为: [[ 0  1  2  3  0  3  6  9]
 [ 4  5  6  7 12 15 18 21]
 [ 8  9 10 11 24 27 30 33]]
纵向组合为: [[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]
 [ 0  3  6  9]
 [12 15 18 21]
 [24 27 30 33]]

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.分割数组

还可以对数组进行分割。NumPy提供了hsplit、vsplit、dsplit和split函数,可以将数组分割成相同大小的子数组,也可以指定原数组中需要分割的位置。

使用hsplit函数可以对数组进行横向分割。
使用vsplit函数可以对数组进行纵向分割。
split函数同样可以实现数组分割。在参数axis=1时,可以进行横向分割;在参数axis=0时,可以进行纵向分割。

案例:分割数组
arr = np.arange(16).reshape(4,4)
print('创建的二维数组为:\n',arr)

print('横向分割为:\n',np.hsplit(arr, 2))  #hsplit函数横向分割
print('纵向分割为:\n',np.vsplit(arr, 2))  #vsplit函数纵向分割

print('横向分割为:\n',np.split(arr, 2, axis=1))  #split函数横向分割
print('纵向分割为:\n',np.split(arr, 2, axis=0))  #split函数纵向分割
创建的二维数组为:
 [[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]
 [12 13 14 15]]
横向分割为:
 [array([[ 0,  1],
       [ 4,  5],
       [ 8,  9],
       [12, 13]]), array([[ 2,  3],
       [ 6,  7],
       [10, 11],
       [14, 15]])]
纵向分割为:
 [array([[0, 1, 2, 3],
       [4, 5, 6, 7]]), array([[ 8,  9, 10, 11],
       [12, 13, 14, 15]])]
横向分割为:
 [array([[ 0,  1],
       [ 4,  5],
       [ 8,  9],
       [12, 13]]), array([[ 2,  3],
       [ 6,  7],
       [10, 11],
       [14, 15]])]
纵向分割为:
 [array([[0, 1, 2, 3],
       [4, 5, 6, 7]]), array([[ 8,  9, 10, 11],
       [12, 13, 14, 15]])]
【Python Numpy】修改数组形状 NumPy(Numerical Python)是Python中用于处理数组和矩阵的重要库,它提供了丰富的功能,用于科学计算、数据分析和机器学习等领域。在NumPy中,数组形状的修改是一个常见的操作,它允许你重新组织或变换数组的维度和大小。本文将介绍NumPy数组形状的概念,以及如何使用NumPy提供的方法来改变数组的形状。在NumPy中,数组的形状(shape)指的是数组的维度和各个维度的大小。一个数组的形状决定了它包含的元素数量和如何排列这些元素。 阅读详情

相关推荐

MS建模mmt

一、流程:1.定义好每个原子力场类型:Edit Sets(分组) 2.加H(一般是仅与Al-O八面体中的Al相连的O原子)、给H分组 3.“make P1”、校核化学式(正确与否) 4.扩成超晶胞(Na-mmt:4*1*1,Ca-mmt:4*2*1,illite:2*1*1,由化学式而定) 5.置换阳离子: mmt:模型中每 32 个 Si 4+有 1 个被 Al 3+ 取...

weixin_30721899的博客 2174

改变numpy数组形状的7种常用方法

例如下图,给array2添加一个np.newaxis,就相当于新数组在np.newaxis位置的维度是1,另一个维度用原数组元素填充。如下图,对于shape是(5,2)的数组它完全没有修改,但是对于array2_1,array2_2,array2_3中,将维度为1的全部删掉了。不是函数,返回的是一个连接后的ndarray或者是一个矩阵。np.newaxis的功能就是增加新的维度,添加在不同的地方,则会在不同的地方增加维度。squeeze也可以展平数组,但是它比较特殊,它只能展平维度是1的部分。

youzi85的博客 4721

别再为CAD和GIS数据对不上而头疼了!一份完整的ArcGIS for AutoCAD坐标系定义与数据套合指南

本文详细介绍了如何通过ArcGIS for AutoCAD插件解决CAD与GIS数据坐标系不匹配的问题,实现数据的精准套合。文章从坐标系冲突分析、插件核心功能解析到五步标准化工作流,提供了完整的解决方案,帮助工程师和设计师提升跨平台协作效率。

weixin_42531886的博客 216

【Numpy】改变数组形状

文章目录前言1. reshape2. ravel3. ndarray.flattenReference 前言 本篇总结、介绍数组的基本操作之一——改变数组形状 [1]。 1. reshape numpy.reshape(a, newshape, order=‘C’):在不改变数据的情况下为数组赋予新的形状 a:类数组(array_like)。待重塑数组 newshape:整数(一维数组)或者整数列表/元组(高维数组)等。重塑之后的数组形状(shape)。需要注意的是重塑之后的数组形状要与待重塑数组的形状

Graduate2015的博客 7761

Isaac Sim 使用经验(配置要求,云服务器)

Google Colab及AutoDL都是在docker内运行,其中google colab并不支持docker指令,而依照AutoDL的相关文档,AutoDL并不直接提供docker指令。2. Google Colab/AutoDL 不支持图形化界面,图形渲染等任务,所以没有办法使用Omniverse Streaming进行直播,从而更好的对结果进行展示。对于第一点,或许存在直接手动复现镜像的可能,但是考虑到Isaac Sim/Isaac Lab由于比较新,可能不够稳定,因此还是按照官方文档进行部署。

weixin_44211433的博客 4589

国产操作系统应用迁移与适配

了解国产操作系统的背景及意义

2301_77609559的博客 2678

Numpy学习之更改数组形状

Numpy学习之更改数组形状 更改数组形状的相关函数如下: x = np.array([1,2,3,4,5,6,7,8]) print(x.shape) # 表示数组的维度,返回一个元组 (8,) x = np.array([[11,12,13,14,15],[16,17,18,19,20],[21,22,23,24,25],[26,27,28,29,30],[31,32,33,34,35]]) y = x.flat #将数组转换成一维的迭代器,可以用for访问数组每一个元素 print(y) <n

m0_46457700的博客 985

VS2015编译配置GDAL(图文并茂、超详细!!!)

文章目录一、GDAL介绍二、下载GDAL三、修改源代码四、工具命令提示符操作五、编译GDAL六、安装GDAL七、在VS2015的项目中配置GDAL八、添加环境变量九、测试是否配置成功 一、GDAL介绍 GDAL(Geospatial Data Abstraction Library)是一个在XMIT许可协议下的开源栅格空间数据转换库。它利用抽象数据模型来表达所支持的各种文件格式。它还有一系列命令行工具来进行数据转换和处理。OGR是GDAL项目的一个分支,功能与GDAL类似,只不过它提供对矢量数据的支持。因此

weixin_46196863的博客 3756

第二章4节-Numpy运用之数组形状改变

1、数组形状改变 Numpy中提供了reshape等方法改变数组的形状,但不改变数据的值 可以对数组转换为一维,即展平 可以将多个数组,组合成一个更大的数组 三维数组的创建和索引 (1).reshape()方法 1)改变形状,原数组不发生变化 arr.reshape(a,b)的参数中,只要其中一个参数是确定的,另一个参数就会自动计算出 2) 当改变形状的时候修改数组的值,原数组的形状没有变化,相对应的值会改变 (2).resize()方法 ...

weixin_45441862的博客 1761

caxa二次开发实例展示

本人有8年CAXA各产品(如电子图版、工艺图表、PDM等)二次开发经验,参与过国家电网南瑞集团、中石油、龙记集团、欧姆龙集团、港日集团、中集集团、中国五矿、方圆塑机、大连锅炉、金蝶PDM集成CAXA,TEAMCENTER集成CAXA、大连锅炉机械、中国中车等项目的开发,擅长CAXA电子图版、CAXA工艺图表的二次开发,有需要的可以联系我,电话:13169467685、13249738576 Q

hourui800720的专栏 8029

华为OD面试八股文嵌入式C语言基础问题及答案(一)

本文总结了C语言编程中的10个关键知识点:1.宏定义MIN的实现方法;2.嵌入式无限循环的两种写法;3.变量a的8种不同定义方式;4.static关键字的三种作用;5.const关键字的含义和使用场景;6.volatile关键字的含义及三个应用实例;7.变量存储位置(栈区、静态区、堆区);8.32位系统指针位数;9.局部与全局变量重名规则;10.引用与指针的三点区别。这些内容涵盖了宏定义、变量声明、存储类别、指针等C语言核心概念,对嵌入式开发和系统编程具有重要参考价值。

m0_50382756的博客 160

Python笔记8|Numpy模块数组的创建、类型转换、数组切片、改变数组形态

Python笔记8|Numpy模块数组的创建、类型转换、数组切片、改变数组形态

Syc1102g的博客 944

指纹浏览器降维打击(下):Cloudflare Turnstile 与 hCaptcha 的底层交互逻辑

本文将深度拆解:Turnstile 与 hCaptcha 的 Iframe 沙箱通信机制,动态混淆 JS 与 PoW(工作量证明)的物理破解法则,以及如何通过 C++ 底层事件合成与环境基因强绑定,实现验证码的“无感过验”。

数据知道的博客 422

多维数组的索引和变换数组的形态

多维数组的索引 import numpy as np arr = np.array([[1, 2, 3, 4, 5], [4, 5, 6, 7, 8], [7, 8, 9, 10, 11]]) print(arr) """ [[ 1 2 3 4 5] [ 4 5 6 7 8] [ 7 8 9 10 11]] ...

achieve_success的博客 656

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

【Python】数据分析.numpy.数组的形态转变

Python----数据分析-numpy.数组的拼接 及 交换数据的行、列 竖直拼接:np.vstack() 水平拼接:np.hstack() 例题: 利用两种拼接方式将t1、t2拼接 import numpy as np t1 = np.arange(12).reshape((2,6)) print(t1) # [[ 0 1 2 3 4 5] # [ 6 7 8 9 10 11]] t2 = np.array(range(12,24)).reshape((2,6)) print(t2)

懂得一千零一种,赋予你失败的方法! 1644

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

在毕设中学习02——numpy多维数组的切片,形态变化,维度交换

2022.5.21 文章目录关于matplotlib.pyplotcv2工具python课本学习构建三维数组,并按照指定维度输出生成一组随机数,摆放为指定矩阵形式Python中range(start,stop,步长)生成指定范围,指定步长的一组数多维数组切片——过滤信息多维矩阵的维度顺序变换多维矩阵的切片多维矩阵的形态变化 关于matplotlib.pyplot cv2工具 两篇博客的学习 文献学习 python课本学习 构建三维数组,并按照指定维度输出 import numpy as np # a=np.

weixin_48751167的博客 608

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

numpy下数组的索引

数组的索引与字符串的索引相差不多 arr3 = np.arange(10) print(arr3[:5]) #[0 1 2 3 4] print(arr3[::2])# [0 2 4 6 8] print(arr3[1::2]) #[1 3 5 7 9] arr3[:2] = 100,101 #修改元素的值 print(arr3) #[100 101 2 3 4 ...

小羽飞的博客 3015

Numpy 统计

numpy中的loadtxt(file,delimiter)方法可以读取文本文件,其中参数file是文件路径,参数delimiter用于指定分隔符,csv文件的分隔符为逗号,,该方法返回一个二维数组。其核心数据结构的 ndarray 数组。本关任务:编写程序,读取iris_sepal_length.csv文件,计算鸢尾花数据集中花萼样本的频度分布。为了完成本关任务,你需要掌握:1.csv文件读取,2.comsum函数应用,3.格式化输出。根据提示,在右侧编辑器Begin-End处补充代码,完成本关任务。

2301_77225918的博客 1456

掌握NumPy数组对象ndarray

1.1.1 创建数组对象 NumPy 提供了两种基本对象:ndarray和ufunc。ndarray(下文统一称为数组)是存储单一数据类型的多维数组,而ufunc则是对数组进行处理的函数。 1.数组的属性 2.数组的创建 NumPy提供的array函数可以创建一维或多维数组,基本语法格式如下: numpy.array(object,dtype=None,copy=True,ord...

霏霏_伊人 1834

Numpy数组与矩阵运算

前言: 扩展库numpy是Python支持科学计算的一个很重要的库,常用语数据分析和科学计算领域,如sklearn、pandas、scipy等,numpy提供了强大的数组运算能力以及复杂的广播机制。本篇内容将介绍数组与矩阵及其相关运算。 基于Numpy的数据分析计算生态系统有: NumPy SciPy Pandas Matplotlib Sckit-image statsmodels scikit-learn Cython PyTables Numba SymPy NumExp...

weixin_63641028的博客 2943

numpy之数组索引,组合,分割

import numpy as np #数组索引 arr = np.arange(10) print(arr[2]) print(arr[::2]) print(arr[-1]) #二维数组的索引 #(1)位置索引连续 arr2 = np.array([[1,2,3,4,5],[4,5,6,7,8],[7,8,9,10,11]]) print(arr2) #print(arr2[行索引值,列索...

weixin_44183162的博客 589

数据分析入门之Numpy数组对象学习

文章目录1、掌握 NumPy 数组对象 ndarray1.1、 数组属性:ndarray(数组)是存储单一数据类型的多维数组。1.2、数组创建1.2.1、重新设置数组的 shape 属性1.2.2、使用 arange 函数创建数组1.2.3、使用 linspace 函数创建数组——等差1.2.4、使用 logspace 函数创建数列——等比1.2.5、使用zeros函数创建数组——全“0”1.2....

阿优乐扬的博客 760

第二章Numpy数组计算(1)

NumPy提供了hsplit、vsplit、dsplit和split函数,可以将数组分割成相同大小的子数组,也可以指定原数组中需要分割的位置。linspace函数的基本使用格式如下。concatenate函数也可以实现数组的横向组合和纵向组合,其中当参数axis=1时,数组按照横向组合,当参数axis=0时,数组按照纵向组合。diag函数:创建类似对角的数组,即除对角线外的其他元素都为0,对角线上的元素可以是0或其他值。3.在NumPy中,所有数组的数据类型是同质的,即数组中的所有元素类型必须是一致的。

m0_68911490的博客 980

【OpenCV-Python】13.OpenCV的形态变换

13.OpenCV的形态变换 文章目录前言一、形态操作内核二、腐蚀三、膨胀四、高级形态操作1、开运算2、闭运算3、先开运算再闭运算4、形态学梯度运算5、黑帽运算6、礼帽运算总结 前言   形态变换主要用于二值图像的形状操作,形态变换的实现原理基于数字形态学。数字形态学也称形态学,它主要从图像内部提取信息来描述图像形态。形态学广泛应用于视觉检测、文字识别、医学图像处理、图像压缩编码等。形态变换主要包括腐蚀、膨胀和高级形态操作。 一、形态操作内核   形态学操作会使用一个内核(也称结构元)遍历图像,根据

每天都在学习的小博主 1370

numpy学习(4)--改变数据的形态

以上是几种常见的方法来改变NumPy数组的形态。这些方法在数据处理和分析中非常有用,可以帮助你进行各种维度间的转换和操作。函数来改变数组的形状,将其重塑为不同的维度和大小。注意,重塑后的新数组的元素总数必须与原数组相同。在NumPy中,你可以使用各种方法来改变数组的形态,以满足不同的需求。这个方法会创建一个新的数组,其中包含原数组中的所有元素。方法不会创建新的数组,它只是返回一个视图,即对原数组的扁平化视图。:有时候你需要改变数组的维度,可以使用。属性来转置数组,即交换数组的行和列。

chenshifu888的博客 476

数据分析----Numpy---变换数组形态

#1.shape与#2.reshape #a1 = np.arange(15).reshape(-1,5) #print(a1) ‘’’ [[ 0 1 2 3 4] [ 5 6 7 8 9] [10 11 12 13 14]] ‘’’ 注意:reshape(m,n),如果说有一个参数为-1时,那么reshape函数会根据另一个参数的维度计算出数组的另外一个shape属性值 #a2 ...

weixin_44675377的博客 611
上一篇: Numpy简易教程3——数组索引
下一篇: Numpy简易教程5——创建NumPy矩阵
mighty13
博客等级 码龄23年 728粉丝 438原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值