[Python] numpy - 如何对数组进行降维或者升维

什么是数组升维?

数组升维是指将原本低维数组转换为更高维的数组的操作。在编程中,数组是一种存储多个相同类型数据的连续内存空间。升维操作可以通过添加额外的维度来增加数组的维数。

举个例子,将一个一维数组升维为二维数组可以使用reshape函数或者使用嵌套列表的方式表示。假设有一个一维数组[1, 2, 3, 4, 5],升维为二维数组可以表示为[[1, 2, 3, 4, 5]]。

升维的目的可以是为了更好地符合计算需求,例如在机器学习中,多维数组往往可以方便地表示多个样本的特征向量。

什么是数组降维?

数组降维是指将原本高维数组转换为更低维的数组的操作。在编程中,数组是一种存储多个相同类型数据的连续内存空间。降维操作可以通过减少数组的维数来实现。

举个例子,将一个二维数组降维为一维数组可以使用flatten函数或者使用迭代的方式获取每个元素。假设有一个二维数组[[1, 2, 3], [4, 5, 6]],降维为一维数组可以表示为[1, 2, 3, 4, 5, 6]。

降维的目的可以是为了简化数据结构或者减少维度对数据处理的复杂性。在数据分析和机器学习中,降维也可以用来减少特征维度,提高算法的效率和准确性。

Numpy中如何进行数组升维?

在NumPy中,可以使用多种方法进行数组的升维操作。下面是一些常用的方法:

reshape函数

通过改变数组的形状来实现升维操作。可以指定新的维度大小,保证原始数组的元素总数与新数组的元素总数一致。例如,将一个一维数组升维为二维数组可以使用reshape函数。

import numpy as np
arr = np.array([1, 2, 3, 4, 5, 6])
print('arr:', arr)
print('arr.shape:', arr.shape)
new_arr = arr.reshape((2, 3))
print('new_arr:', new_arr)
print('new_arr.shape:', new_arr.shape)

newaxis关键字

可以在指定的位置插入一个新的维度。可以通过使用None或者np.newaxis来实现。例如,将一个一维数组升维为二维数组可以使用newaxis关键字。

import numpy as np
arr = np.array([1, 2, 3, 4, 5, 6])
print('arr:', arr)
print('arr.shape:', arr.shape)
new_arr = arr[np.newaxis, :]
print('new_arr:', new_arr)
print('new_arr.shape:', new_arr.shape)

expand_dims函数

在指定的位置插入一个新的维度。可以通过指定axis参数来确定插入的位置。例如,将一个一维数组升维为二维数组可以使用expand_dims函数。

import numpy as np
arr = np.array([1, 2, 3, 4, 5, 6])
print('arr:', arr)
print('arr.shape:', arr.shape)
new_arr = np.expand_dims(arr, axis=0)
print('new_arr:', new_arr)
print('new_arr.shape:', new_arr.shape)

new_arr = np.expand_dims(arr, axis=1)
print('new_arr:', new_arr)
print('new_arr.shape:', new_arr.shape)

这些方法可以根据需要选择合适的方式对数组进行升维操作。

Numpy中如何进行数组降维?

在NumPy中,可以使用多种方法进行数组的降维操作。下面是一些常用的方法:

flatten函数

将多维数组降为一维数组。该函数会将数组展平,并返回一个新的一维数组。

import numpy as np
arr = np.array([[1, 2, 3], [4, 5, 6]])
print('arr:', arr)
print('arr.shape:', arr.shape)
new_arr = arr.flatten()
print('new_arr:', new_arr)
print('new_arr.shape:', new_arr.shape)

ravel函数

将多维数组降为一维数组。该函数与flatten函数功能类似,但是返回的是一个视图(view)而不是新的数组。

import numpy as np
arr = np.array([[1, 2, 3], [4, 5, 6]])
print('arr:', arr)
print('arr.shape:', arr.shape)
new_arr = arr.ravel()
print('new_arr:', new_arr)
print('new_arr.shape:', new_arr.shape)

squeeze函数

去掉数组中维度为1的维度,将其降维。如果数组中有多个维度为1的维度,可以通过指定axis参数来指定要去除的维度。

import numpy as np
arr = np.array([[1, 2, 3], [4, 5, 6]])
print('arr:', arr)
print('arr.shape:', arr.shape)
new_arr = np.squeeze(arr)
print('new_arr:', new_arr)
print('new_arr.shape:', new_arr.shape)

这些方法可以根据需要选择合适的方式对数组进行降维操作。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【服务器数据恢复】EqualLogic存储磁盘坏道导致存储不可用的数据恢复案例

服务器数据恢复环境&故障: 某公司IT部门一台某品牌EqualLogic PS6100系列存储在运行过程中突然崩溃。 服务器管理员对故障服务器存储进行初步检查,经过检测发现导致该服务器存储无法正常工作的原因是该存储中raid5磁盘阵列内有2块硬盘出现故障离线&a…

VitePress-03-标题锚点的使用与文档内部链接跳转

说明 本文介绍如下内容: 1、vitepress 中 md 文件中的标题锚点 2、锚点的使用 : 文档内部的快速跳转 锚点 什么是锚点 锚点 : 通俗的理解就是一个位置标记,通过这个标记可以快速的进行定位。 【vitepress 中,md 文档的…

LeetCode 40.组合总和 II

组合总和 II 给定一个候选人编号的集合 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。 candidates 中的每个数字在每个组合中只能使用 一次 。 注意:解集不能包含重复的组合。 方法一、回溯 由于题目要求解集…

day23 其他事件(页面加载事件、页面滚动事件)

目录 页面加载事件页面/元素滚动事件页面滚动事件——获取位置 页面加载事件 加载外部资源(如图片、外联CSS和JavaScript等)加载完毕时触发的事件为什么使用: 有时候需要等页面资源全部处理完毕再做一些事老代码喜欢把script写在head中&…

CentOS使用

1.使用SSH连接操作虚拟机中的CentOS 使用代理软件(MobaX/Xshell)通过ssh连接vmware中的虚拟机,可以摆脱vmware笨重的软件,直接在代理软件中进行操作. 包括使用云虚拟器,其实也只是在本地通过ssh连接别处的云服务商的硬件而已. 1.1 配置静态IP 为什么要配置静态IP? 想要使用…

【Linux 内核源码分析】多核调度分析

多核调度 SMP(Symmetric Multiprocessing,对称多处理)是一种常见的多核处理器架构。它将多个处理器集成到一个计算机系统中,并通过共享系统总线和内存子系统来实现处理器之间的通信。 首先,SMP架构将一组处理器集中在…

leetcode hot100岛屿数量

本题中要求统计岛屿数量(数字1的上下左右均为1,则是连续的1,称为一块岛屿)。那么这种类型题都是需要依靠深度优先搜索(DFS)或者广度优先搜索(BFS)来做的。这两种搜索,实际…

【开源】基于JAVA+Vue+SpringBoot的民宿预定管理系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 用例设计2.2 功能设计2.2.1 租客角色2.2.2 房主角色2.2.3 系统管理员角色 三、系统展示四、核心代码4.1 查询民宿4.2 新增民宿4.3 新增民宿评价4.4 查询留言4.5 新增民宿订单 五、免责说明 一、摘要 1.1 项目介绍 基于…

第2章-神经网络的数学基础——python深度学习

第2章 神经网络的数学基础 2.1 初识神经网络 我们来看一个具体的神经网络示例,使用 Python 的 Keras 库 来学习手写数字分类。 我们这里要解决的问题是, 将手写数字的灰度图像(28 像素28 像素)划分到 10 个类别 中(0…

【动态规划】【逆向思考】【C++算法】960. 删列造序 III

作者推荐 【动态规划】【map】【C算法】1289. 下降路径最小和 II 本文涉及知识点 动态规划汇总 LeetCode960. 删列造序 III 给定由 n 个小写字母字符串组成的数组 strs ,其中每个字符串长度相等。 选取一个删除索引序列,对于 strs 中的每个字符串&a…

STM正点mini-跑马灯

一.库函数版 1.硬件连接 GPIO的输出方式:推挽输出 IO口输出为高电平时,P-MOS置高,输出为1,LED对应引脚处为高电平,而二极管正&#…

【代码随想录-数组】螺旋矩阵 II

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学习,不断总结,共同进步,活到老学到老导航 檀越剑指大厂系列:全面总结 jav…

《动手学深度学习(PyTorch版)》笔记4.7

Chapter4 Multilayer Perceptron 4.7 Forward/Backward Propagation and Computational Graphs 本节将通过一些基本的数学和计算图,深入探讨反向传播的细节。首先,我们将重点放在带权重衰减( L 2 L_2 L2​正则化)的单隐藏层多层…

SQL注入:盲注

SQL注入系列文章: 初识SQL注入-CSDN博客 SQL注入:联合查询的三个绕过技巧-CSDN博客 SQL注入:报错注入-CSDN博客 目录 什么是盲注? 布尔盲注 手工注入 使用python脚本 使用sqlmap 时间盲注 手工注入 使用python脚本 使…

深兰科技入选亿欧《“制”敬不凡先锋榜·智能机器人Top10》榜单

日前,由亿欧协办的2023工博会工业智能化发展高峰论坛于上海成功举办,会上发布了《2023智能制造:“制”敬不凡先锋者》系列名单。深兰科技凭借在智能机器人开发中的技术创新和模式应用,入选《“制”敬不凡先锋榜——智能机器人Top1…

第3章-python深度学习——(波斯美女)

第3章 神经网络入门 本章包括以下内容: 神经网络的核心组件 Keras 简介 建立深度学习工作站 使用神经网络解决基本的分类问题与回归问题 本章的目的是让你开始用神经网络来解决实际问题。你将进一步巩固在第 2 章第一个示例中学到的知识,还会将学到的…

Linux——软件安装

1、软件包的分类 Linux下的软件包众多,而且几乎都是经GPL授权的,也就是说这些软件都免费,振奋人心吧?而且更棒的是,这些软件几乎都提供源代码(开源的),只要你愿意,就可以…

【GitHub项目推荐--开源PDF 工具】【转载】

12 年历史的 PDF 工具开源了 最近在整理 PDF 的时候,有一些需求普通的 PDF 编辑器没办法满足,比如 PDF 批量合并、编辑等。 于是,我就去 GitHub 上看一看有没有现成的轮子,发现了这个 PDF 神器「PDF 补丁丁」,让人惊…

C++类和对象——构造函数与解析函数介绍

目录 1.构造函数和析构函数 1.构造函数,进行初始化 2.析构函数,进行清理 2.构造函数的分类及调用 1.括号法 注意: 2.显示法 3.隐式转化法 匿名对象 3.拷贝构造函数调用时机 4.构造函数调用规则 1.定义有参构造函数,不…

2023年全球软件开发大会(QCon广州站2023):核心内容与学习收获(附大会核心PPT下载)

在全球化的科技浪潮中,软件开发行业日新月异,持续推动着社会经济的飞速发展。本次峰会以“引领未来,探索无限可能”为主题,聚焦软件开发领域的最新技术、最佳实践和创新思想。来自世界各地的顶级专家、企业领袖和开发者齐聚一堂&a…