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

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 31 a = np.array([36, 42])2 c = np.array([[10, 20, 30], [40, 50, 60]])
----> 3 a + cValueError: 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.mzph.cn/news/816958.shtml

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

相关文章

Linux:调试器 - gdb

Linux&#xff1a;调试器 - gdb gbd基本概念gbd调试浏览断点运行变量 gbd基本概念 GDB (GNU Debugger) 是一个强大的命令行调试工具,用于调试各种编程语言(如C、C、Java、Python等)编写的程序。使用 gdb可以帮助开发人员更快地定位和修复程序中的缺陷,提高代码质量和开发效率。…

软考 - 系统架构设计师 - ETL工具

概念 ETL 工具是一种用于将数据从源系统中提取、进行转换和加载到目标系统中的软件工具&#xff08;数据迁移工具&#xff09;。它们在数据仓库和商业智能项目中起到至关重要的作用。 ETL 的主要步骤 ETL 过程包括数据抽取&#xff08;Extract&#xff09;、数据转换&#xff…

二叉树经典OJ题(2)

一、根据二叉树创建字符串 . - 力扣&#xff08;LeetCode&#xff09; class Solution { public://前序遍历&#xff1a;根 左 右//左子树为空&#xff0c;右子树不为空的时候&#xff0c;不能省略左//左不为空&#xff0c;右子树为空的时候&#xff0c;可以省略右//都为空&am…

Java基于微信小程序的校园外卖平台设计与实现,附源码

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;…

SpringBoot 封装Http请求

1.引入jar包 <dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpclient</artifactId><version>4.5.10</version></dependency> 2.HttpUtils操作类封装 package com.gnss.gis.utils;import com.gnss…

MySQL 知识目录

MySQL 知识相关目录主要参考尚硅谷 宋红康老师的视屏&#xff0c;参考链接为 尚硅谷MySQL入门到高级-宋红康版_哔哩哔哩_bilibili 1、基础篇 数据库概述 链接&#xff1a;数据库概述-CSDN博客基本的select语句 链接&#xff1a;基本的select语句-CSDN博客mysql 运算符 链接&a…

一文读懂Vue中的el-dialog(附Demo)

目录 前言1. 基本知识2. Demo 前言 原先对于该知识点写过一个Demo&#xff0c;推荐阅读&#xff1a;点击按钮框来选择相应信息&#xff08;Vue Java&#xff09; 1. 基本知识 el-dialog 是 Element UI 框架中的一个组件&#xff0c;用于创建对话框 提供了丰富的功能和选项…

Day8-Python基础学习之地图和柱状图构建

构建地图 # 地图可视化基本使用 from pyecharts.charts import Map from pyecharts.options import * ​ # 准备地图对象 map Map() # 准备数据 data [("北京市", 99),("上海市", 199),("湖南省", 299),("台湾省", 399),("广东…

积分学<4>——定积分的性质

索引 定积分的性质远算性质定理4.1 定积分的线性性定理4.2 定积分的乘积可积性定理4.3 定积分的保序性定理4.4 定积分的绝对可积性定理4.5 定积分的区间可加性 积分中值定理积分第一中值定理 定积分的性质 远算性质 定理4.1 定积分的线性性 若函数 f ( x ) f\left ( x \righ…

Leetcode 3117. Minimum Sum of Values by Dividing Array

Leetcode 3117. Minimum Sum of Values by Dividing Array 1. 解题思路2. 代码实现 题目链接&#xff1a;3117. Minimum Sum of Values by Dividing Array 1. 解题思路 这一题思路上就是一个动态规划&#xff0c;我们只需要考察每一个元素是否需要放在当前的group当中还是作…

使用Python爬虫代理IP快速增加博客阅读量

目录 前言 二、Python爬虫代理IP技术简介 1.什么是爬虫&#xff1f; 2.什么是代理IP&#xff1f; 3.为什么使用代理IP&#xff1f; 三、使用Python爬虫代理IP增加博客阅读量的步骤 1.获取代理IP地址 2.模拟多次访问 3.定时任务 四、注意事项 五、总结 前言 随着互联…

Matlab 2024安装教程(附免费安装包资源)

鼠标右击软件压缩包&#xff0c;选择“解压到MatlabR2024a“。 2.打开解压后的文件夹&#xff0c;鼠标右击“MATHWORKS_R2024A“选择装载。 鼠标右击“setup“选择”以管理员身份运行“。点击“是“&#xff0c;然后点击”下一步“。复制一下密钥粘贴至输入栏&#xff0c;然后…

【Tars-go】腾讯微服务框架学习使用01--初始化服务

1 初始INIT-Demo运行 按照官网描述 go get 安装框架依赖 # < go 1.16 go get -u github.com/TarsCloud/TarsGo/tars/tools/tarsgo go get -u github.com/TarsCloud/TarsGo/tars/tools/tars2go # > go 1.16 go install github.com/TarsCloud/TarsGo/tars/tools/tarsgolat…

SSH安全设置

今天发现自己的公有云服务器被攻击了 然后查看了登录日志&#xff0c;如上图 ls -sh /var/log/secure vim /var/log/secure然后增加了安全相关的设置 具体可以从以下方面增加安全性&#xff1a; 修改默认SSH端口公有云修改安全组策略及防火墙端口设置登录失败次数锁定用户及限…

MySQL事务与事务原理

目录 事务 事务的四大特性ACID 事务隔离级别 事务原理 存储引擎 四大特性的保证 MVCC 事务链 ReadView 事务 事务指逻辑上的一组操作&#xff0c;组成这组操作的各个单元&#xff0c;要么全部成功&#xff0c;要么全部失败。 start transaction; -- 开启事务 或者 b…

B端:设置页面如何减少用户的录入操作。

录入操作尤其是文字录入是比较是比较繁琐的&#xff0c;尤其是在移动端小屏幕上&#xff0c;简直就是灾难。不过我们可以通过合理的设置、识别、记忆、自动填充等技术来有效的减少录入。 在 B 端设置页面中&#xff0c;可以采取多种方式来减少用户的录入操作&#xff0c;提高用…

MacOS Python版本管理(pyenv)

1. 通过 homebrew 安装 pyenv brew update brew install pyenv 2. 修改 zsh profile 否则通过pyenv切换python版本会不生效 # 编辑 .zshrc or ~/.bash_profile vim ~/.zshrc# 在配置下面增加 export PYENV_ROOT"$HOME/.pyenv" export PATH"$PYENV_ROOT/shi…

python__构造方法

魔术方法 1、__init__()方法&#xff0c;被称为构造方法&#xff0c;在创建类对象时&#xff0c;会自动执行&#xff0c;在创建类对象的时候&#xff0c;会将传入的参数自动传递给__init__()方法。 class Student:name Noneage Nonetel Nonedef __init__(self,name,age,te…

第二期书生浦语大模型训练营第三次作业

任务一&#xff1a;在茴香豆 Web 版中创建自己领域的知识问答助手 构建个人回答助手 进入web页面&#xff0c;传输属于自己的文件&#xff0c;此处进行输入大量投资领域资料&#xff0c;构建个人投资者问答助手 回答示例 茴香豆缺陷 此处会发现茴香豆仍然存在一些缺点&#…

长短期记忆网络 – Long short-term memory | LSTM

目录 简单的例子理解LSTM LSTM的输入和输出信息。 隐状态和细胞状态是什么