当前位置: 首页 > news >正文

【深度学习】 Python 和 NumPy 系列教程(十):NumPy详解:2、数组操作(索引和切片、形状操作、转置操作、拼接操作)

目录

一、前言

二、实验环境

三、NumPy

0、多维数组对象(ndarray)

1. 多维数组的属性

1、创建数组

2、数组操作

1. 索引和切片

a. 索引

b. 切片

2. 形状操作

a. 获取数组形状

b. 改变数组形状

c. 展平数组

3. 转置操作

a. 使用.T属性

b. 使用transpose()函数

4. 拼接操作

np.concatenate()函数

np.vstack()函数

np.hstack()函数


一、前言

        Python是一种高级编程语言,由Guido van Rossum于1991年创建。它以简洁、易读的语法而闻名,并且具有强大的功能和广泛的应用领域。Python具有丰富的标准库和第三方库,可以用于开发各种类型的应用程序,包括Web开发、数据分析、人工智能、科学计算、自动化脚本等。

        Python本身是一种伟大的通用编程语言,在一些流行的库(numpy,scipy,matplotlib)的帮助下,成为了科学计算的强大环境。本系列将介绍Python编程语言和使用Python进行科学计算的方法,主要包含以下内容:

  • Python:基本数据类型、容器(列表、元组、集合、字典)、函数、类
  • Numpy:数组、索引和切片、数组数学、广播
  • Matplotlib:绘图,子图,图像
  • IPython:创建笔记本,典型工作流程

二、实验环境

numpy1.21.6
python3.7.16
  • 运行下述命令检查Python版本
 python --version 
  • 运行下述代码检查Python、NumPy版本
import sys
import numpy as npprint("Python 版本:", sys.version)
print("NumPy 版本:", np.__version__)

三、NumPy

        NumPy(Numerical Python)是一个用于科学计算的Python库。它提供了一个强大的多维数组对象(ndarray),用于进行高效的数值运算和数据处理。Numpy的主要功能包括:

  1. 多维数组:Numpy的核心是ndarray对象,它是一个多维数组,可以存储同类型的元素。这使得Numpy非常适合处理向量、矩阵和其他多维数据结构。

  2. 数学函数:Numpy提供了许多常用的数学函数,如三角函数、指数函数、对数函数等。这些函数可以直接应用于整个数组,而无需编写循环。

  3. 广播(Broadcasting):Numpy支持不同形状的数组之间的运算,通过广播机制,可以对形状不同的数组进行逐元素的操作,而无需显式地编写循环。

  4. 线性代数运算:Numpy提供了丰富的线性代数运算函数,如矩阵乘法、求解线性方程组、特征值计算等。

  5. 随机数生成:Numpy包含了用于生成各种概率分布的随机数的函数,如均匀分布、正态分布、泊松分布等。

  6. 数据操作:Numpy提供了很多用于操作数组的函数,如切片、索引、排序、去重等。

        Numpy广泛应用于科学计算、数据分析、机器学习等领域。它的高效性和便捷性使得它成为Python数据科学生态系统中不可或缺的组成部分。

0、多维数组对象(ndarray)

        NumPy的ndarray对象是NumPy库中最重要的对象之一,也是进行科学计算的核心数据结构。ndarray代表了一个多维的数组,可以存储相同类型的元素。

1. 多维数组的属性

  • ndarray.shape:返回表示数组形状的元组,例如(2, 3)表示2行3列的数组。
  • ndarray.dtype:返回数组中元素的数据类型,例如intfloatbool等。
  • ndarray.ndim:返回数组的维度数,例如1表示一维数组,2表示二维数组。

1、创建数组

【深度学习】 Python 和 NumPy 系列教程(九):NumPy详解:1、创建数组的n种方式_QomolangmaH的博客-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/m0_63834988/article/details/132782221?spm=1001.2014.3001.5502

2、数组操作

1. 索引和切片

  • a. 索引

    • 使用整数索引:可以使用整数索引访问数组中的特定元素。例如,arr[0]将返回数组arr中的第一个元素。
    • 使用布尔索引:可以使用布尔数组作为索引来选择满足特定条件的元素。例如,arr[arr > 5]将返回数组arr中大于5的元素。
    • 使用多维索引:对于多维数组,可以使用多个整数或布尔索引来访问特定的元素。例如,arr[0, 1]将返回多维数组arr中第一行第二列的元素。
import numpy as nparr = np.array([1, 2, 3, 4, 5])# 整数索引
print(arr[0])  # 输出:1# 布尔索引
print(arr[arr > 3])  # 输出:[4, 5]# 多维索引
arr = np.array([[1, 2, 3], [4, 5, 6]])
print(arr[0, 1])  # 输出:2

  • b. 切片

    • 使用基本切片:可以使用基本切片表示法从数组中获取连续的子数组。例如,arr[1:5]将返回数组arr中索引为1到4的元素。
    • 使用步长切片:可以使用步长切片表示法从数组中获取间隔的子数组。例如,arr[1:5:2]将返回数组arr中索引为1、3的元素。
    • 使用省略号切片:对于多维数组,可以使用省略号(...)表示连续的切片。例如,arr[..., 1]将返回多维数组arr中的第二列。
    • 使用负数索引和切片:可以使用负数索引和切片来从数组的末尾开始访问元素。例如,arr[-1]将返回数组arr中的最后一个元素。
import numpy as nparr = np.array([1, 2, 3, 4, 5])# 基本切片
print(arr[1:4])  # 输出:[2, 3, 4]# 步长切片
print(arr[1:5:2])  # 输出:[2, 4]# 省略号切片
arr = np.array([[1, 2, 3], [4, 5, 6]])
print(arr[..., 1])  # 输出:[2, 5]# 负数索引和切片
print(arr[-1])  # 输出:[4, 5, 6]

2. 形状操作

a. 获取数组形状

b. 改变数组形状

c. 展平数组

import numpy as nparr = np.array([[1, 2, 3], [4, 5, 6]])# 获取数组形状
print(arr.shape)  # 输出:(2, 3)# 改变数组形状
reshaped_arr = arr.reshape((3, 2))
print(reshaped_arr)
# 输出:
# [[1 2]
#  [3 4]
#  [5 6]]# 展平数组
flattened_arr = arr.flatten()
print(flattened_arr)  # 输出:[1 2 3 4 5 6]

3. 转置操作

        数组转置操作是指将数组的行和列互换的操作,转置操作对于处理二维数组特别有用,例如在矩阵运算和线性代数中经常需要对数组进行转置。

a. 使用.T属性

        在NumPy中,多维数组对象(ndarray)具有一个名为.T的属性,可以用于进行转置操作。该属性返回原始数组的转置结果,即行变为列,列变为行。

import numpy as nparr = np.array([[1, 2, 3], [4, 5, 6]])
transposed_arr = arr.T
print(transposed_arr)

输出:

[[1 4]
[2 5]
[3 6]]

b. 使用transpose()函数

        另一种实现数组转置的方法是使用np.transpose()函数。该函数接受一个多维数组作为参数,并返回其转置结果。

import numpy as nparr = np.array([[1, 2, 3], [4, 5, 6]])
transposed_arr = np.transpose(arr)
print(transposed_arr)

输出:

[[1 4]
[2 5]
[3 6]]

4. 拼接操作

        数组拼接操作是指将多个数组按照指定的方式进行连接的操作。

np.concatenate()函数

        np.concatenate()函数用于沿指定的轴连接数组。可以沿着现有的轴连接两个或多个数组,也可以指定axis参数来创建一个新的轴。np.concatenate()`函数将`arr1`和`arr2`沿着行方向(`axis=0`)进行了拼接:

import numpy as nparr1 = np.array([[1, 2], [3, 4]])
arr2 = np.array([[5, 6]])# 沿行方向拼接数组
concatenated_arr = np.concatenate((arr1, arr2), axis=0)
print(concatenated_arr)

 输出:

[[1 4]
[2 5]
[3 6]]

np.vstack()函数

        np.vstack()函数用于垂直拼接(按行堆叠)两个或多个数组。它将输入的数组沿着垂直方向堆叠起来,生成一个新的数组。

import numpy as nparr1 = np.array([[1, 2], [3, 4]])
arr2 = np.array([[5, 6]])# 垂直拼接数组
vstack_arr = np.vstack((arr1, arr2))
print(vstack_arr)

输出:

[[1 4]
[2 5]
[3 6]]

np.hstack()函数

        np.hstack()函数用于水平拼接(按列堆叠)两个或多个数组。它将输入的数组沿着水平方向堆叠起来,生成一个新的数组。

import numpy as nparr1 = np.array([[1, 2], [3, 4]])
arr2 = np.array([[5, 6]])# 水平拼接数组
hstack_arr = np.hstack((arr1, arr2.T))

输出:

[[1 2 5]
[3 4 6]]

相关文章:

【深度学习】 Python 和 NumPy 系列教程(十):NumPy详解:2、数组操作(索引和切片、形状操作、转置操作、拼接操作)

目录 一、前言 二、实验环境 三、NumPy 0、多维数组对象(ndarray) 1. 多维数组的属性 1、创建数组 2、数组操作 1. 索引和切片 a. 索引 b. 切片 2. 形状操作 a. 获取数组形状 b. 改变数组形状 c. 展平数组 3. 转置操作 a. 使用.T属性 b…...

3D视觉测量:复现Gocator的间隙面差

文章目录 0. 测试效果1. Gocator实现基本内容1.1 实现步骤1.2 参数说明 2. 未作 or TODO3. 开发说明 目标:使用C PCL复现Gocator中的间隙面差前置说明:因为没有拿到Gocator中用到的原始数据,仅是拿到与之类似的数据,因此最后测试的…...

文献综述怎么写?(以利用Zotero的文献管理软件为例)

文章目录 文章内容总结前言一. 利用文献管理软件建立文献库1. 创建文献分类2. 在论文库中搜索关键词并导入到文献管理软件中以web of science 为例以 IEEE Xplore为例 二、 导出文献、阅读摘要并记录关键字三、寻找一两篇本方向的文献综述,分析借鉴其文章结构四、写…...

中尺度混凝土二维有限元求解——运行弯曲、运行光盘、运行比较、运行半圆形(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...

Python文件存读取

Python文件存读取 想整理一下存读取函数,方便以后直接调用。 读取 1、读xls、csv、xlsx到dataframe 这段代码非常好用,这个函数直接把各种格式文件给汇总了 def readDataFile(readPath): # readPath: 数据文件的地址和文件名try:if (readPath[-4:]…...

SpringBoot整合Easy-ES实现对ES操作

请确保已有可用的ES&#xff0c;若没有&#xff0c;请移步&#xff1a;Docker安装部署ElasticSearch&#xff08;ES&#xff09; 新建SpringBoot项目 这里是用的springboot版本是2.6.0 引入依赖 <!-- 排除springboot中内置的es依赖,以防和easy-es中的依赖冲突--><…...

让NPU跑起来迅为RK3588开发板设置交叉编译器

让NPU跑起来迅为RK3588开发板设置交叉编译器 编译器下载地址是网盘资料“iTOP-3588 开发板\02_【iTOP-RK3588 开发板】开发资料 \12_NPU 使用配套资料\03_编译所需工具\Linux”。 拷贝 gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu.tar.gz 到 Ubuntu 的/opt/tool_ch…...

yyyy-MM-dd‘T‘HH:mm:ssZ的T是什么意思?为什么要用单引号引着

背景 Java里的日期格式&#xff0c;通常我们看到 yyyy-MM-ddTHH:mm:ssZ 的写法是什么意思&#xff1f; 尤其这个T作为分隔符为什么左右有单引号&#xff0c;这个单引号会打印出来吗&#xff1f; 这个Z又是什么意思&#xff1f;是时区吗&#xff1f;如果是时区&#xff0c;输…...

SIT1145AQ收发器芯片CAN FD Passive功能详解(摘自官网)

芯力特在SIT1145AQ/FD版本中加入了CAN FD Passive功能&#xff0c;CAN FD Passive功能简单来说就是SIT1145AQ/FD在休眠或待机模式下屏蔽总线上的CAN FD报文。 为什么需要CAN FD Passive功能呢&#xff1f; SIT1145AQ的特定帧唤醒只支持CAN报文&#xff0c;当SIT1145AQ休眠模式…...

安卓毕业设计各种app项目,Android毕设设计,Android课程设计,毕业论文

作为一位从事软件开发多年的专业人士&#xff0c;您积累了丰富的经验和技能&#xff0c;解决了许多不同类型的问题。除了开发原创项目&#xff0c;您还愿意分享您的知识&#xff0c;指导实习生和在校生。这种乐于助人的行为对于行业的发展和新一代软件开发者的成长都起着积极的…...

c++下的ros通信(cmake的报错问题多)

1.自定义msg 这里的自定义msg和python的其实是一样的&#xff1a; 首先在src目录下 catkin_create_pkg car_interfaces rospy roscpp std_msgs message_runtime message_generation然后新建一个msg文件夹&#xff0c;然后建立相应的msg文件&#xff0c;接着就可以修改编译所需…...

测试必备 | 测试工程师必知的Linux命令有哪些?

在日常的测试工作中&#xff0c;涉及到测试环境搭建及通过查看日志来定位相关问题时经常会用到Linux&#xff0c;在测试工程师的面试中也经常会有笔试或面试的题目来考查测试人员对Linux的熟悉程度&#xff0c;这里分享下测试工程师需知的 Linux 命令有哪些。 Linux 作为一种常…...

成集云 | 药师帮集成英克ERP接口 | 解决方案

源系统成集云目标系统 业务背景 药师帮是一家专注于医药行业的电商平台&#xff0c;提供医药产品在线采购、销售和物流等一站式服务。药师帮致力于用数字化赋能院外医药市场的参与者&#xff0c;包括药企、药品分销商、药店及基层医疗机构&#xff0c;努力以安全高效…...

ICPC 2022 网络赛 d ( 数位dp + 二分

#include<bits/stdc.h> using namespace std; using VI vector<int>; using ll long long; const int mod 998244353;ll n; int d[100]; int dp[60][40][40][2]; set<int> s; //枚举数位&#xff0c;枚举这一位余数是几 //每一位的限制&#xff0c; int d…...

透视俄乌网络战之二:Conti勒索软件集团(下)

透视俄乌网络战之一&#xff1a;数据擦除软件 透视俄乌网络战之二&#xff1a;Conti勒索软件集团&#xff08;上&#xff09; Conti勒索软件集团&#xff08;下&#xff09; 1. 管理面板源代码2. Pony凭证窃取恶意软件3. TTPs4. Conti Locker v2源代码5. Conti团伙培训材料6. T…...

网络安全深入学习第一课——热门框架漏洞(RCE-命令执行)

文章目录 一、RCE二、命令执行/注入-概述三、命令执行-常见函数四、PHP命令执行-常见函数1、exec&#xff1a;2、system3、passthru4、shell_exec5、反引号 backquote 五、PHP命令执行-常见函数总结六、命令执行漏洞成因七、命令执行漏洞利用条件八、命令执行漏洞分类1、代码层…...

应用在电子体温计中的国产温度传感芯片

电子体温计由温度传感芯片&#xff0c;液晶显示器&#xff0c;纽扣电池&#xff0c;专用集成电路及其他电子元器件组成。能快速准确地测量人体体温&#xff0c;与传统的水银玻璃体温计相比&#xff0c;具有读数方便&#xff0c;测量时间短&#xff0c;测量精度高&#xff0c;能…...

JVM 虚拟机 ----> Java 内存模型(JMM)

文章目录 Java 内存模型&#xff08;JMM&#xff09;一、运行时数据区域划分二、程序计数器&#xff08;Program Counter Register&#xff09;计数器的作用 三、Java 虚拟机栈&#xff08;VM Stack&#xff09;四、本地方法栈&#xff08;Native Method Stack&#xff09;五、…...

指针-字符串替换

任务描述 从标准输入读入数据&#xff0c;每行中最多包含一个字符串 “_xy_”&#xff0c;且除了字符串“_xy_”外&#xff0c;输入数据中不包括下划线字符&#xff0c;请将输入行中的 “_xy_” 替换为 “_ab_”, 在标准输出上输出替换后的结果&#xff1b;若没有进行过满足条…...

docker 网络(单机环境)

文章目录 深入理解 Namespace什么是NamespaceNamespace当中的 Network Namespace Libcontainerdocker 网络基础创建两个命名空间创建网络接口 veth pair命名空间添加 veth 接口为 veth 接口分配 IP启动 veth 接口相互 ping bridge 网络搭建网络环境查看docker0 网桥创建网桥 br…...

Python 爬虫高级实战:爬虫接口限流自适应调节

前言 网络目标站点普遍具备严格的接口访问限流、频率校验、IP 频次风控、接口令牌校验等防护机制&#xff0c;常规固定延时、固定并发的爬虫模式极易触发封禁、接口 429 限流、会话失效、IP 拉黑等问题。人工配置延时、手动调整并发阈值的传统方式&#xff0c;无法适配站点动态…...

图解人工智能(12)自动做化学实验的机器

近年来&#xff0c;人工智能和传统科学的结合备受瞩目。2019年&#xff0c;英国利物浦大学在《自然》杂志发表论文&#xff0c;介绍了一种可以自动做化学实验的机器人。查找相关资料&#xff0c;并讨论一下类似的工作能给人类社会带来怎样的变革。首先&#xff0c;实验人员的培…...

第六届机械制造与智能控制国际学术会议(ICMMIC 2026)

第六届机械制造与智能控制国际学术会议&#xff08;ICMMIC 2026&#xff09;将于2026年6月12-14日在中国浙江湖州隆重举行。本次会议旨在汇聚全球“机械制造、智能控制”领域的学者、专家、研发者和技术人员&#xff0c;共同探讨学术前沿&#xff0c;分享科研成果&#xff0c;促…...

Acrylic Paint风格在Midjourney中失效的5大隐性陷阱(附官方未公开的--s 700+--style raw协同调参公式)

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;Acrylic Paint风格在Midjourney中的本质定义与失效现象全景图 Acrylic Paint&#xff08;丙烯画&#xff09;风格在Midjourney中并非原生语义标签&#xff0c;而是一种通过视觉特征逆向建模的提示工程产…...

如何永久保存微信聊天记录:5分钟学会WeChatMsg免费完整指南

如何永久保存微信聊天记录&#xff1a;5分钟学会WeChatMsg免费完整指南 【免费下载链接】WeChatMsg 提取微信聊天记录&#xff0c;将其导出成HTML、Word、CSV文档永久保存&#xff0c;对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trending/we/…...

数据分析实习面试准备全攻略:专业知识+项目深挖+行为面试,职卓科技的面试辅导体系

摘要数据分析实习面试通常包含三大模块&#xff1a;专业知识考察&#xff08;SQL、Python、统计学基础&#xff09;、项目深挖&#xff08;业务理解、技术选择、问题解决&#xff09;、行为面试&#xff08;团队协作、学习能力、职业规划&#xff09;。很多学员在面试中表现不佳…...

爆单实操课:从3C到美妆,跨境商家如何用AI神器搞定TikTok本土化

每天都有无数跨境卖家在各大社群里发问&#xff1a;怎么用ai生成带货视频&#xff0c;有哪些工具比较好用&#xff1f; 在 TikTok 这个极度依赖内容爆发的平台上&#xff0c;不同类目的产品对视频素材的需求千差万别。靠人工剪辑不仅效率低&#xff0c;且极难跨越本土化语言的障…...

taotoken的token plan套餐让长期使用的成本预测变得简单

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 Taotoken 的 Token Plan 套餐让长期使用的成本预测变得简单 对于将大模型 API 深度集成到业务流程中的团队而言&#xff0c;成本管…...

Jentic Mini:为AI智能体构建安全的API执行层与凭据管理方案

1. 项目概述&#xff1a;为AI智能体构建安全的API执行层 如果你正在开发AI智能体&#xff0c;并且希望它能帮你操作Notion、Slack、GitHub这些真实世界的服务&#xff0c;那你一定遇到过这个核心难题&#xff1a;怎么把API密钥安全地交给它&#xff1f;直接把密钥塞进提示词里&…...

视频对象移除与背景修复:时空联合建模实战指南

1. 项目概述&#xff1a;让AI“脑补”被遮挡的画面&#xff0c;不是魔法&#xff0c;是空间-时间联合建模的落地“This AI takes a video and fills the missing pixels behind an object!”——这句话乍看像科幻预告片里的旁白&#xff0c;但其实它精准指向一个正在快速成熟的…...