当前位置: 首页 > 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;包括游戏…...

Linux应用开发之网络套接字编程(实例篇)

服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …...

CVPR 2025 MIMO: 支持视觉指代和像素grounding 的医学视觉语言模型

CVPR 2025 | MIMO&#xff1a;支持视觉指代和像素对齐的医学视觉语言模型 论文信息 标题&#xff1a;MIMO: A medical vision language model with visual referring multimodal input and pixel grounding multimodal output作者&#xff1a;Yanyuan Chen, Dexuan Xu, Yu Hu…...

Unity3D中Gfx.WaitForPresent优化方案

前言 在Unity中&#xff0c;Gfx.WaitForPresent占用CPU过高通常表示主线程在等待GPU完成渲染&#xff08;即CPU被阻塞&#xff09;&#xff0c;这表明存在GPU瓶颈或垂直同步/帧率设置问题。以下是系统的优化方案&#xff1a; 对惹&#xff0c;这里有一个游戏开发交流小组&…...

循环冗余码校验CRC码 算法步骤+详细实例计算

通信过程&#xff1a;&#xff08;白话解释&#xff09; 我们将原始待发送的消息称为 M M M&#xff0c;依据发送接收消息双方约定的生成多项式 G ( x ) G(x) G(x)&#xff08;意思就是 G &#xff08; x ) G&#xff08;x) G&#xff08;x) 是已知的&#xff09;&#xff0…...

css的定位(position)详解:相对定位 绝对定位 固定定位

在 CSS 中&#xff0c;元素的定位通过 position 属性控制&#xff0c;共有 5 种定位模式&#xff1a;static&#xff08;静态定位&#xff09;、relative&#xff08;相对定位&#xff09;、absolute&#xff08;绝对定位&#xff09;、fixed&#xff08;固定定位&#xff09;和…...

tree 树组件大数据卡顿问题优化

问题背景 项目中有用到树组件用来做文件目录&#xff0c;但是由于这个树组件的节点越来越多&#xff0c;导致页面在滚动这个树组件的时候浏览器就很容易卡死。这种问题基本上都是因为dom节点太多&#xff0c;导致的浏览器卡顿&#xff0c;这里很明显就需要用到虚拟列表的技术&…...

在鸿蒙HarmonyOS 5中使用DevEco Studio实现企业微信功能

1. 开发环境准备 ​​安装DevEco Studio 3.1​​&#xff1a; 从华为开发者官网下载最新版DevEco Studio安装HarmonyOS 5.0 SDK ​​项目配置​​&#xff1a; // module.json5 {"module": {"requestPermissions": [{"name": "ohos.permis…...

解析两阶段提交与三阶段提交的核心差异及MySQL实现方案

引言 在分布式系统的事务处理中&#xff0c;如何保障跨节点数据操作的一致性始终是核心挑战。经典的两阶段提交协议&#xff08;2PC&#xff09;通过准备阶段与提交阶段的协调机制&#xff0c;以同步决策模式确保事务原子性。其改进版本三阶段提交协议&#xff08;3PC&#xf…...

Redis上篇--知识点总结

Redis上篇–解析 本文大部分知识整理自网上&#xff0c;在正文结束后都会附上参考地址。如果想要深入或者详细学习可以通过文末链接跳转学习。 1. 基本介绍 Redis 是一个开源的、高性能的 内存键值数据库&#xff0c;Redis 的键值对中的 key 就是字符串对象&#xff0c;而 val…...

LUA+Reids实现库存秒杀预扣减 记录流水 以及自己的思考

目录 lua脚本 记录流水 记录流水的作用 流水什么时候删除 我们在做库存扣减的时候&#xff0c;显示基于Lua脚本和Redis实现的预扣减 这样可以在秒杀扣减的时候保证操作的原子性和高效性 lua脚本 // ... 已有代码 ...Overridepublic InventoryResponse decrease(Inventor…...