numpy学习笔记(3),数组连接

news2024/12/24 2:22:54

6. 连接数组

6.1. 连接数组,
6.2. 分割数组,
6.3. 算术运算,
6.4. 广播(重点)

6.1 连接数组

  • concatenate
  • hstack
  • vstack
6.1.1 使用concatenate函数

沿指定轴连接多个数组,语法格式如下:
numpy.concatenate((a1, a2, …), axis=0)

  • a1, a2是要连接的数组,除了连接指定轴外,其他轴大小(元素个数)相同。即:按行连接,每一行的元素个数要相同;
  • axis是沿指定轴的索引,默认为0。
import numpy as np
a = np.array([[1, 2], [3, 4]])
b = np.array([[5, 6]]) # 注意:这是个二维数组
ab = np.concatenate((a, b), axis=0)
ab
array([[1, 2],
       [3, 4],
       [5, 6]])
c = b.T
print(c)
# 将b翻转后再与a,沿axis=1连接
ac = np.concatenate((a, c), axis=1)
ac
[[5]
 [6]]

array([[1, 2, 5],
       [3, 4, 6]])
6.1.2 使用hstack函数

水平堆叠:相当于concatenate函数的axis=1

d = np.array([[7], [8]])
ad = np.hstack((a, d)) # 注意hstack的参数是元组类型
6.1.3 使用vstack函数

垂直堆叠:相当于concatenate函数的axis=0

e = np.array([[11, 23]])
ae = np.vstack((a, e))
ae
array([[ 1,  2],
       [ 3,  4],
       [11, 23]])

6.2 分割数组

  • split
  • hsplit
  • vsplit
6.2.1 使用split函数

split函数沿指定轴分割成多个数组,语法格式如下:

numpy.split(array, indces_or_sections, axis)
  • array:要分割的数组
  • indices_or_sections:整数或数组,如果是整数就用该数平均分割;如果是数组,则沿指定轴切片操作(包含开始元素,不包含结束元素)
  • axis:分割轴

array = [1, 2, 3, 4, 5, 6, 7, 8, 9]
indice_or_sections = 3;
可以分割,因为9可以被3整除;
如果indices_or_sections = 4;
就不能分割,因为9不能被4整除;

# 整数
a = np.arange(9)
b = np.split(a, 3)
b
[array([0, 1, 2]), array([3, 4, 5]), array([6, 7, 8])]
# 数组
c = np.split(a, [3, 5, 7])
c
[array([0, 1, 2]), array([3, 4]), array([5, 6]), array([7, 8])]
# 二维数组
a = np.array([[1, 2, 3], [4, 5, 6]])
b = np.split(a, 2, axis=0)
print(b)
[array([[1, 2, 3]]), array([[4, 5, 6]])]
c = np.split(a, 3, axis=1)
print(c)
print(type(c)) # 分割后的c,不是numpy类型了
print(type(c[0]))
[array([[1],
       [4]]), array([[2],
       [5]]), array([[3],
       [6]])]
<class 'list'>
<class 'numpy.ndarray'>
6.2.2 使用hsplit与vsplit函数

相当于split函数的axis=1与axis=0的情况

6.3 算术运算

Numpy数组对象可以使用python原生的算术运算符,加,减,乘,除等等

  1. 形状相同的数组计算:每个位置的元素独立计算
  2. 数组+标量:数组里每个元素都与标量单独计算
  3. 形状不同的数组或标量计算:广播
    在这里插入图片描述
a = np.array([[1, 2], [3, 4]])
b = np.array([[5, 6], [7, 8]])
a + b
array([[ 6,  8],
       [10, 12]])
a * b
array([[ 5, 12],
       [21, 32]])

注意:a * b并不是矩阵乘法

6.4 广播

不同形状的数组或标量计算时发生广播

6.4.1 标量广播

将标量扩展成与数组形状相同的数组,再进行计算
在这里插入图片描述

a = np.array([[1, 2], [3, 4]])
b = 10
a + b
array([[11, 12],
       [13, 14]])
a * b
array([[10, 20],
       [30, 40]])
6.4.2 数组广播

广播规则:

  1. 如果两个数组维度不相等,维度较低的数组的形状会从左侧开始,填充1,知道维度与较高维度的数组相等。
  2. 如果两个数组维度相等,要不对应轴长度相同,要么其中一个长度为1,则是兼容数组,可以广播。长度为1的轴会被扩展。
    在这里插入图片描述
a = np.array([36, 42])
b = np.array([[10, 20], [30, 40], [50, 60]])
a + b
array([[ 46,  62],
       [ 66,  82],
       [ 86, 102]])

上面代码:

  1. 一维数组a,首先升维成二维数组a2
  2. a2扩展成与b相同形状
a = np.array([36, 42])
c = np.array([[10, 20, 30], [40, 50, 60]])
a + c
---------------------------------------------------------------------------

ValueError                                Traceback (most recent call last)

Cell In[14], line 3
      1 a = np.array([36, 42])
      2 c = np.array([[10, 20, 30], [40, 50, 60]])
----> 3 a + c


ValueError: operands could not be broadcast together with shapes (2,) (2,3) 

上面代码:

  1. 一维数组a,首先升维成二维数组a2,形状(1, 2)
  2. a2向数组b形状(2, 3)扩展,(2, 2)
  3. 0轴上相等了,但是1轴上不相等,并且a2的1轴不是1,所以不能再扩展
  4. 计算错误

6.5 实例

  1. 将华氏度的值转换成摄氏度
  2. 公式:C = (5(F - 32))/9
f = [0, 12, 45.21, 34, 99.91]
F = np.array(f)
print("华氏度:", F)
C = (5 * (F - 32))/9
print("摄氏度:", C)
华氏度: [ 0.   12.   45.21 34.   99.91]
摄氏度: [-17.77777778 -11.11111111   7.33888889   1.11111111  37.72777778]

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1595114.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

最新版守约者二级域名分发系统

主要功能 二级域名管理&#xff1a; 我们的系统提供全面的二级域名管理服务&#xff0c;让您轻松管理和配置二级域名。 域名分发&#xff1a;利用我们先进的域名分发技术&#xff0c;您可以自动化地分配和管理域名&#xff0c;确保每个用户或客户都能及时获得所需的域名资源。…

串口RS485

1.原理 全双工&#xff1a;在同一时刻可以同时进行数据的接收和数据的发送&#xff0c;两者互不影响 半双工&#xff1a;在同一时刻只能进行数据的接收或者数据的发送&#xff0c;两者不能同时进行 差分信号幅值相同&#xff0c;相位相反&#xff0c;有更强的抗干扰能力。 干…

Java实现二叉树(下)

1.前言 http://t.csdnimg.cn/lO4S7 在前文我们已经简单的讲解了二叉树的基本概念&#xff0c;本文将讲解具体的实现 2.基本功能的实现 2.1获取树中节点个数 public int size(TreeNode root){if(rootnull){return 0;}int retsize(root.left)size(root.right)1;return ret;}p…

基于深度学习的花卉检测系统(含PyQt界面)

基于深度学习的花卉检测系统&#xff08;含PyQt界面&#xff09; 前言一、数据集1.1 数据集介绍1.2 数据预处理 二、模型搭建三、训练与测试3.1 模型训练3.2 模型测试 四、PyQt界面实现参考资料 前言 本项目是基于swin_transformer深度学习网络模型的花卉检测系统&#xff0c;…

正确使用@RequestMapping(包含属性详解)

目录 一、基本认知二、RequestMapping的基本使用三、深入学习RequestMapping1、RequestMapping的源码2、RequestMapping的属性2.1 path2.2 method2.3 params2.4 headers2.5 consumes2.6 produces2.7 name 一、基本认知 客户端发起Http请求&#xff0c;会提供一个URL [协议://域…

Unity 2D让相机跟随角色移动

相机跟随移动 最简单的方式通过插件Cinemachine 在窗口/包管理器选择全部找到Cinemachine&#xff0c;导入。然后在游戏对象/Cinemachine创建2D Camera。此时层级中创建一个2D相机。选中人物拖入检查器Follow。此时相机跟随人物移动。 修改相机视口距离 在检查器中Lens下调正…

单细胞RNA测序(scRNA-seq)构建人类参考基因组注释

细胞定量是scRNA-seq重要的分析步骤,主要是进行细胞与基因的定量, cell ranger将比对、质控、定量都封装了起来,使用起来也相当便捷。 单细胞RNA测序(scRNA-seq)基础知识可查看以下文章: 单细胞RNA测序(scRNA-seq)工作流程入门 单细胞RNA测序(scRNA-seq)细胞分离与…

logistic分叉图

MATLAB代码 % 初始化 r_min 2.5; % 参数r的起始值 r_max 4.0; % 参数r的结束值 r_step 0.001; % 参数r的步长 r_values r_min:r_step:r_max; % 参数r的范围% 分岔图数据初始化 num_iterations 1000; % 总迭代次数 num_last_points 100; % 用于绘图的最后的这些…

MySQL Innodb 中的排它锁、共享锁、意向锁、记录锁、间隙锁、临键锁、死锁讲解

一、MySQL 锁机制 MySQL作为流行的关系型数据库管理系统之一&#xff0c;在处理并发访问时&#xff0c;锁起着至关重要的作用。锁的使用可以确保数据的完整性&#xff0c;同时也是实现并发操作的必备工具。在MySQL Innodb 引擎中锁可以理解为两个方向的东西&#xff0c;一个是…

stm32移植嵌入式数据库FlashDB

本次实验的程序链接stm32f103FlashDB嵌入式数据库程序资源-CSDN文库 一、介绍 FlashDB 是一款超轻量级的嵌入式数据库&#xff0c;专注于提供嵌入式产品的数据存储方案。与传统的基于文件系统的数据库不同&#xff0c;FlashDB 结合了 Flash 的特性&#xff0c;具有较强的性能…

白话微机:10.民风淳朴的MCS-51小镇(小镇方言:汇编)

1. 基本结构与周期 MCS-51系列单片机属于8位单片机用 8051单片机构成最小应用系统时&#xff0c;只要将单片机接上时钟电路和复位电路即可MCS-51单片机由CPU、存储器和I/O三部分组成CPU是指&#xff1a;运算器和控制器 “PC CPU 3BUS RAM I/O” 在执行指令过程中&#xff…

cdn加速与ssl加速

cdn CDN的全称是Content Delivery Network&#xff0c;即内容分发网络。其基本思路是尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节&#xff0c;使内容传输的更快、更稳定。 简单的来说&#xff0c;就是把原服务器上数据复制到其他服务器上&#xff0c;用户访…

论文笔记:SmartPlay : A Benchmark for LLMs as Intelligent Agents

iclr 2024 reviewer评分 5688 引入了 SmartPlay&#xff0c;一种从 6 种不同游戏中提取的基准 衡量LLM作为智能体的能力 1 智能代理所需的能力 论文借鉴游戏设计的概念&#xff0c;确定了智能LLM代理的九项关键能力&#xff0c;并为每项能力确定了多个等级&#xff1a; 长文…

Python杂记--使用asyncio构建HTTP代理服务器

Python杂记--使用asyncio构建HTTP代理服务器 引言基础知识代码实现 引言 本文将介绍 HTTP 代理的基本原理&#xff0c;并带领读者构建一个自己的 HTTP 代理服务器。代码中不会涉及到任何第三方库&#xff0c;全部由 asyncio 实现&#xff0c;性能优秀&#xff0c;安全可靠。 基…

[管理者与领导者-163] :团队管理 - 高效执行力 -1- 高效沟通的架构、关键问题、注意事项

目录 前言&#xff1a;沟通是管理者实施管理最重要的工作 一、人与人沟通模型 1.1 模型 1.2 完整过程 1.3 发送和接受方式 1.4 传输 1.5 关于编码与解码 1.6 反馈 1.7 沟通中常见问题 二、管理者如何提高沟通的效率 2.1 为什么管理者布置任务后&#xff0c;总有人…

MYSQL执行过程和顺序详解

一、前言 1.1、说明 就MySQL在执行过程、sql执行顺序&#xff0c;以及一些相关关键字的注意点方面的学习分享内容。 在参考文章的基础上&#xff0c;会增加自己的理解、看法&#xff0c;希望本文章能够在您的学习中提供帮助。 如有错误的地方&#xff0c;欢迎指出纠错&…

Web端Excel的导入导出Demo

&#x1f4da;目录 &#x1f4da;简介:✨代码的构建&#xff1a;&#x1f4ad;Web端接口Excel操作&#x1f680;下载接口&#x1f680;导入读取数据接口 &#x1f3e1;本地Excel文件操作⚡导出数据&#x1f308;导入读取数据 &#x1f4da;简介: 使用阿里巴巴开源组件Easy Exce…

在Windows上安装Go编译器并配置Golang开发环境

文章目录 1、安装Go语言编译程序1.1、下载GoLang编译器1.2、安装GoLang编译器 2、配置Golang IDE运行环境2.1、配置GO编译器2.1.1、GOROOT 概述2.1.2、GOROOT 作用2.1.2、配置 GOROOT 2.2、配置GO依赖管理2.2.1、Module管理依赖2.2.2、GOPATH 管理依赖 2.3、运行GO程序2.3.1、创…

OpenCV 学习笔记2 C++

1.图像直方图 直方图&#xff08;Histogram&#xff09;是图像处理中常用的工具&#xff0c;它表示图像中每个像素强度值的分布情况。在OpenCV中&#xff0c;可以使用 cv::calcHist 函数来计算图像的直方图。 图像直方图是一种展示图像像素强度分布的统计图表。它显示了图像中…