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

6、Numpy形状操纵

目录

1. 使用 reshape 改变形状

2. 使用 resize 改变大小和形状

3. 使用 ravel 或 flatten 展平数组

4. 使用 -1 推断尺寸

5. 使用 newaxis 增加维度

6. 使用 squeeze 移除单维度条目


1. 使用 reshape 改变形状

对于任何 NumPy 数组,你可以使用 reshape 方法来改变其形状,而不改变数据本身。

import numpy as np # 创建一个一维数组 
arr = np.arange(6) 
print("Original array:", arr) # 使用 reshape 改变数组形状 
reshaped_arr = arr.reshape((2, 3)) 
print("Reshaped array:\n", reshaped_arr)

上述代码将一个包含六个元素的一维数组转换成了一个 2x3 的二维数组:

Original array: [0 1 2 3 4 5]
Reshaped array:[[0 1 2][3 4 5]]

2. 使用 resize 改变大小和形状

resize 方法类似于 reshape,但它可以改变数组的大小。如果新大小大于原始大小,resize 会重复数组中的数据以填充新数组。

# 创建一个一维数组 
arr = np.array([1, 2, 3]) # 使用 resize 改变大小和形状 
np.resize(arr, (2, 3))

这将创建一个新的 2x3 数组,其中原始数组的元素被复制以填充新数组。

3. 使用 ravel 或 flatten 展平数组

ravelflatten 方法将多维数组转换为一维数组。flatten 总是返回一个新的数组,而 ravel 返回一个数组视图,如果可能的话。

# 创建一个二维数组 
arr = np.array([[1, 2, 3], [4, 5, 6]]) # 使用 ravel 展平数组 
flat_arr = arr.ravel() 
print("Flattened array with ravel:", flat_arr) # 使用 flatten 展平数组 
flat_arr2 = arr.flatten() 
print("Flattened array with flatten:", flat_arr2)

结果:

Flattened array with ravel: [1 2 3 4 5 6]
Flattened array with flatten: [1 2 3 4 5 6]

 

4. 使用 -1 推断尺寸

在重塑数组时,你可以在一个维度上使用 -1,让 NumPy 自动计算这个维度的大小。

# 创建一个一维数组 
arr = np.arange(12) # 使用 reshape 时在一个维度上使用 -1 
reshaped_arr = arr.reshape((3, -1)) 
print("Reshaped array with -1:\n", reshaped_arr)

上述代码会创建一个 3x4 的二维数组,因为 -1 会被解释为 4 来匹配原始数组的总大小。结果:

Reshaped array with -1:[[ 0  1  2  3][ 4  5  6  7][ 8  9 10 11]]

5. 使用 newaxis 增加维度

使用 np.newaxis 可以在数组中增加一个新的轴,也就是增加一个维度。

# 创建一个一维数组 
arr = np.array([1, 2, 3]) # 使用 newaxis 增加一个新的维度 
column_arr = arr[:, np.newaxis] 
print("Column array with newaxis:\n", column_arr) # 或者,将其变为行向量 
row_arr = arr[np.newaxis, :] 
print("Row array with newaxis:\n", row_arr)

这种技术常用于将一维数组转换为列向量或行向量,以符合某些算法的输入要求。结果:

Column array with newaxis:[[1][2][3]]
Row array with newaxis:[[1 2 3]]

6. 使用 squeeze 移除单维度条目

squeeze 方法用于从数组的形状中去除单维度的条目,即那些大小为 1 的维度。

# 创建一个具有单一维度的数组 
arr = np.array([[[1], [2], [3]]]) 
print("Original array shape:", arr.shape) 
# 使用 squeeze 移除单维度条目 
squeezed_arr = arr.squeeze() 
print("Squeezed array shape:", squeezed_arr.shape)
print("Squeezed array:", squeezed_arr)

在上述代码中,我们将一个 1x3x1 的三维数组压缩成了一个 3x1 的二维数组。结果:

Original array shape: (1, 3, 1)
Squeezed array shape: (3,)
Squeezed array: [1 2 3]

相关文章:

6、Numpy形状操纵

目录 1. 使用 reshape 改变形状 2. 使用 resize 改变大小和形状 3. 使用 ravel 或 flatten 展平数组 4. 使用 -1 推断尺寸 5. 使用 newaxis 增加维度 6. 使用 squeeze 移除单维度条目 1. 使用 reshape 改变形状 对于任何 NumPy 数组,你可以使用 reshape 方法来…...

C++初阶类与对象(二):详解构造函数和析构函数

上次为类与对象开了一个头:C初阶类与对象(一):学习类与对象、访问限定符、封装、this指针 今天就来更进一步 文章目录 1.类的6个默认成员函数2.构造函数2.1引入和概念2.2构造函数特性2.2.1特性1~42.2.2注意2.2.3特性5~72.2.4注意 …...

【Vue3】3-3 : 组件之间是如何进行互相通信的

本书目录:点击进入 一、组件之间为什么要做通信 二、组件之间通信方式 2.1、父传子:由传递属性实现 stage 1:申明 (即定义) stage 2:注册 stage 3:使用 【示例】:父组件将 tit…...

网络端口映射和端口转发的区别和联系

目 录 一、端口映射技术 1.1 原理 1.2 应用场景 1、远程访问 2、游戏主机 3、文件共享 4、监控视频共享 二、端口转发技术 2.1 原理 2.2 应用场景 1、网络负载均衡 2、网络安全 3、网络代理 三、端口映射和转发的实现方法 3.1 路由器配置 3.2 网络防火墙 …...

VLSI超大规模集成电路设计复习

目录 VLSI超大规模集成电路设计复习引论MOS原理延时组合逻辑时序电路SRAM 总结(一张纸)参考资料 VLSI超大规模集成电路设计复习 复习可参照官网PPT上的知识点,然后根据知识点对应的去看书上的讲解。 引论 摩尔定律 尺寸缩小定律 N、P型半…...

GCC 内联汇编

LINUX下的汇编入门 AT&T风格 汇编 和GCC风格汇编 汇编代码的调试 前面写了三篇,是自我摸索三篇,摸着石头过河,有些或许是错误的细节,不必在意! 今天我们直接用GCC编译C语言代码,且在C语言里面内嵌AT&T风格的汇编! 前三篇大家了解即可,我们重点放在内嵌汇编里,简单快…...

springboot整合websocket后启动报错:javax.websocket.server.ServerContainer not available

一、场景 Springboot使用ServerEndpoint来建立websocket链接。引入依赖。 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-websocket</artifactId> </dependency>配置Websocket Confi…...

Vue面试之生命周期(上篇)

Vue面试之生命周期(上篇) 创建阶段beforeCreatecreated挂载阶段beforeMountmounted更新阶段beforeUpdateupdated销毁阶段beforeDestroydestroyed补充说明activated...

Gin 框架之用户密码加密

文章目录 一、引入二、密码加密位置三、如何加密四、bcrypt 库加密4.1 介绍4.2 优点&#xff1a;4.3 使用 五、小黄书密码加密实践 一、引入 Gin是一个用Go语言编写的Web框架&#xff0c;而用户密码的加密通常是在应用程序中处理用户身份验证时的一个重要问题。 通常敏感信息…...

【创作活动】ChatGPT 和文心一言哪个更好用?

文章目录 文心一言优点缺点 ChatGPT优点缺点 Java编码能力比较对人工智能的看法 ChatGPT是由OpenAI开发的交互式AI大模型&#xff0c; 文心一言是由百度研发的知识增强大语言模型&#xff0c;本文从Java开发的角度对比一下哪个更好用&#xff08;本文仅用于投稿CSDN创造活动&am…...

【linux】查看Debian应用程序图标对应的可执行命令

在Debian系统中&#xff0c;应用程序图标通常与.desktop文件关联。您可以通过查看.desktop文件来找到对应的可执行命令。这些文件通常位于/usr/share/applications/或~/.local/share/applications/目录下。这里是如何查找的步骤&#xff1a; 1. 打开文件管理器或终端。 2. 导…...

TortoiseSVN客户端如何安装配置并实现公网访问服务端提交文件到本地服务器

文章目录 前言1. TortoiseSVN 客户端下载安装2. 创建检出文件夹3. 创建与提交文件4. 公网访问测试 前言 TortoiseSVN是一个开源的版本控制系统&#xff0c;它与Apache Subversion&#xff08;SVN&#xff09;集成在一起&#xff0c;提供了一个用户友好的界面&#xff0c;方便用…...

【AUTOSAR】RTE 接口类型、应用场景差别及实例讲解

目录 摘要 概念 CS接口 SR接口 接口选择 对于CPU负载率的影响...

Qt应用开发(安卓篇)——Hello Qt On Android

一、前言 这一篇从实际出发&#xff0c;讲述如何创建、编译和部署Qt On Android项目。 二、ADB调试 ADB的全称为Android Debug Bridge&#xff0c;就是起到调试桥的作用&#xff0c;主要用于连接计算机与Android 设备&#xff0c;以便进行调试和数据传输。ADB 可以实现以下主要…...

第十三讲_css 伸缩盒模型flex

css 伸缩盒模型flex 1. 伸缩盒模型介绍2. 伸缩盒模型的主轴方向3. 伸缩盒模型的主轴换行4. 主轴上的对齐方式5. 侧轴上对齐方式5.1 一行的侧轴上对齐方式5.2 多行的侧轴上对齐方式 6. 伸缩项目的伸缩性6.1 伸缩项目在主轴上的基准长度6.2 伸缩项目的放大6.3 伸缩项目的缩小 7. …...

【C++干货铺】C++11常用新特性 | 列表初始化 | STL中的变化

个人主页点击直达&#xff1a;小白不是程序媛 C系列专栏&#xff1a;C干货铺 代码仓库&#xff1a;Gitee 目录 C11简介 列表初始化 std::initializer_list std::initializer_list使用场景 decltype关键字 STL中的一些变化 新容器 array forward_list 容器中的一些新…...

k8s的对外服务---ingress

service的作用体现在两个方面&#xff1a; 集群内部&#xff1a;不断追踪pod的变化。他会更新endpoint中的pod对象&#xff0c;基于pod的IP地址不断变化的一种服务发现机制。 集群外部&#xff1a;类似负载均衡器&#xff0c;把流量IP端口&#xff0c;不涉及转发url(http、htt…...

element-ui的el-upload组件实现上传拖拽排序图片顺序(sortablejs)

<template><!-- 省略其他配置 --><el-upload ref"upload" :file-list.sync"fileList"></el-upload></template><script>import Sortable from sortablejs;export default {data() {return {fileList: []};},mounted()…...

【PS】PS设计图欣赏、学习、借鉴

【PS】PS设计图欣赏、学习、借鉴 bilibili萌新PS学习计划&#xff1a;PS教程全套零基础教学视频&#xff08;全套81节全新版本&#xff09;...

游戏云化好吗?游戏云化会带来什么?

随着云计算技术的飞速发展&#xff0c;游戏云化成为游戏产业中备受关注的话题。这一新兴技术给玩家和游戏行业带来了全新的可能性。本文将深入探讨游戏云化的概念、优势以及可能带来的影响。 1、什么是游戏云化&#xff1f; 游戏云化是指将游戏的各个环节&#xff0c;包括游戏…...

日语AI面试高效通关秘籍:专业解读与青柚面试智能助攻

在如今就业市场竞争日益激烈的背景下&#xff0c;越来越多的求职者将目光投向了日本及中日双语岗位。但是&#xff0c;一场日语面试往往让许多人感到步履维艰。你是否也曾因为面试官抛出的“刁钻问题”而心生畏惧&#xff1f;面对生疏的日语交流环境&#xff0c;即便提前恶补了…...

如何在看板中体现优先级变化

在看板中有效体现优先级变化的关键措施包括&#xff1a;采用颜色或标签标识优先级、设置任务排序规则、使用独立的优先级列或泳道、结合自动化规则同步优先级变化、建立定期的优先级审查流程。其中&#xff0c;设置任务排序规则尤其重要&#xff0c;因为它让看板视觉上直观地体…...

2021-03-15 iview一些问题

1.iview 在使用tree组件时&#xff0c;发现没有set类的方法&#xff0c;只有get&#xff0c;那么要改变tree值&#xff0c;只能遍历treeData&#xff0c;递归修改treeData的checked&#xff0c;发现无法更改&#xff0c;原因在于check模式下&#xff0c;子元素的勾选状态跟父节…...

Web 架构之 CDN 加速原理与落地实践

文章目录 一、思维导图二、正文内容&#xff08;一&#xff09;CDN 基础概念1. 定义2. 组成部分 &#xff08;二&#xff09;CDN 加速原理1. 请求路由2. 内容缓存3. 内容更新 &#xff08;三&#xff09;CDN 落地实践1. 选择 CDN 服务商2. 配置 CDN3. 集成到 Web 架构 &#xf…...

【数据分析】R版IntelliGenes用于生物标志物发现的可解释机器学习

禁止商业或二改转载&#xff0c;仅供自学使用&#xff0c;侵权必究&#xff0c;如需截取部分内容请后台联系作者! 文章目录 介绍流程步骤1. 输入数据2. 特征选择3. 模型训练4. I-Genes 评分计算5. 输出结果 IntelliGenesR 安装包1. 特征选择2. 模型训练和评估3. I-Genes 评分计…...

Mobile ALOHA全身模仿学习

一、题目 Mobile ALOHA&#xff1a;通过低成本全身远程操作学习双手移动操作 传统模仿学习&#xff08;Imitation Learning&#xff09;缺点&#xff1a;聚焦与桌面操作&#xff0c;缺乏通用任务所需的移动性和灵活性 本论文优点&#xff1a;&#xff08;1&#xff09;在ALOHA…...

Redis的发布订阅模式与专业的 MQ(如 Kafka, RabbitMQ)相比,优缺点是什么?适用于哪些场景?

Redis 的发布订阅&#xff08;Pub/Sub&#xff09;模式与专业的 MQ&#xff08;Message Queue&#xff09;如 Kafka、RabbitMQ 进行比较&#xff0c;核心的权衡点在于&#xff1a;简单与速度 vs. 可靠与功能。 下面我们详细展开对比。 Redis Pub/Sub 的核心特点 它是一个发后…...

push [特殊字符] present

push &#x1f19a; present 前言present和dismiss特点代码演示 push和pop特点代码演示 前言 在 iOS 开发中&#xff0c;push 和 present 是两种不同的视图控制器切换方式&#xff0c;它们有着显著的区别。 present和dismiss 特点 在当前控制器上方新建视图层级需要手动调用…...

HubSpot推出与ChatGPT的深度集成引发兴奋与担忧

上周三&#xff0c;HubSpot宣布已构建与ChatGPT的深度集成&#xff0c;这一消息在HubSpot用户和营销技术观察者中引发了极大的兴奋&#xff0c;但同时也存在一些关于数据安全的担忧。 许多网络声音声称&#xff0c;这对SaaS应用程序和人工智能而言是一场范式转变。 但向任何技…...

goreplay

1.github地址 https://github.com/buger/goreplay 2.简单介绍 GoReplay 是一个开源的网络监控工具&#xff0c;可以记录用户的实时流量并将其用于镜像、负载测试、监控和详细分析。 3.出现背景 随着应用程序的增长&#xff0c;测试它所需的工作量也会呈指数级增长。GoRepl…...