numpy 中的降维与升维

2024-08-29 03:04
文章标签 numpy 降维 升维

本文主要是介绍numpy 中的降维与升维,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

升维(Dimensionality Augmentation):增加数据的维度,通常用于提供更多信息或从不同的角度看待数据。

降维(Dimensionality Reduction):减少数据的维度,通常用于简化数据或去除无关紧要的特征。

降维

最近在飞桨学习机器学习的时候发现一个概念让人摸不清头脑,计算梯度的时候使用了 np.mean 来进行降维。

z = net.forward(x)
gradient_w=(z-y)* x
gradient_w=np.mean(gradient_w,axis=0)
gradient_w= gradient_w[:,np.newaxis]
gradient_b=(z-y)
gradient_b=np.mean(gradient_b)
#此处b是一个数值,所以可以直接用np.mean得到一个标量
gradient_b
142.50289323156107

在这里插入图片描述
‌numpy数组的维度(13,)和(13,1)的主要区别在于它们的维度和表示的数据结构。‌

当一个numpy数组的维度为(13,),它表示这是一个一维数组,只有一个索引维度,即数据只能通过一个单一的索引来进行访问。这种形状的数组通常用于表示一维的数据序列,如时间序列数据或简单的数值列表。在这种情况下,数组中的每个元素都可以通过一个单一的索引(从0到12)来访问。
相比之下,维度为(13,1)的数组是一个二维数组,但它只有一列。这种形状的数组在numpy中通常用于表示行向量,即它有一个行索引维度和一个列索引维度,尽管列维度只包含一个元素。这种形状的数组在数学和科学计算中特别有用,因为它允许对数据进行矩阵操作,即使这些矩阵实际上只有一行或一列。例如,一个(13,1)的数组可以看作是一个包含13个元素的列向量,每个元素都可以通过两个索引(一行和一列)来访问。
在这里插入图片描述
为什么降维?
1、随着数据维度不断降低,数据存储所需的空间也会随之减少。
2、低维数据有助于减少计算/训练用时。
3、一些算法在高维度数据上容易表现不佳,降维可提高算法可用性。
4、降维可以用删除冗余特征解决多重共线性问题。比如我们有两个变量:“一段时间内在跑步机上的耗时”和“卡路里消耗量”。这两个变量高度相关,在跑步机上花的时间越长,燃烧的卡路里自然就越多。因此,同时存储这两个数据意义不大,只需一个就够了。
5、降维有助于数据可视化。如果数据维度很高,可视化会变得相当困难,而绘制二维三维数据的图表非常简单。

减少数据的维度,通常用于简化数据或去除无关紧要的特征。

数组的降维

  1. array.ravel()
  2. np.squeeze(array)
  3. array.reshape(-1)
  4. array.flatten():返回源数据的副本

升维

增加数据的维度,通常用于提供更多信息或从不同的角度看待数据。
数组的升维

  1. np.atleast_2d(array) 转为二维数组
  2. np.atleast_3d(array) 转为三维数组
  3. array[:,np.newaxis] 升维一次 n行一列
  4. array[np.newaxis,:] 升维一次 一行n列
  5. array.reshape(-1,1) 变成n行一列
  6. array.reshape(1,-1) 变成一行n列
  7. np.expand_dims(a, axis)

参考:

https://www.jb51.net/python/3024442as.htm
https://huaweicloud.csdn.net/6380889adacf622b8df89aba.html

这篇关于numpy 中的降维与升维的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1116661

相关文章

python科学计算:NumPy 线性代数与矩阵操作

1 NumPy 中的矩阵与数组 在 NumPy 中,矩阵实际上是一种特殊的二维数组,因此几乎所有数组的操作都可以应用到矩阵上。不过,矩阵运算与一般的数组运算存在一定的区别,尤其是在点积、乘法等操作中。 1.1 创建矩阵 矩阵可以通过 NumPy 的 array() 函数创建。矩阵的形状可以通过 shape 属性来访问。 import numpy as np# 创建一个 2x3 矩阵mat

探索Python的数学魔法:Numpy库的神秘力量

文章目录 探索Python的数学魔法:Numpy库的神秘力量背景:为什么选择Numpy?Numpy是什么?如何安装Numpy?五个简单的库函数使用方法场景应用常见Bug及解决方案总结 探索Python的数学魔法:Numpy库的神秘力量 背景:为什么选择Numpy? 在Python的世界中,数据处理和科学计算是不可或缺的一部分。但原生Python在处理大规模数据时可能会显

Numpy random.random()函数补充

np.random.random() np.random.random()的作用是生成指定形状的均匀分布的值为[0,1)的随机数 参数为size,也就是用于指定的形状大小 import numpy as npprint(np.random.random(size=(2, 2)))# [[0.19671797 0.85492315]# [0.99609539 0.66437246]]

保研 比赛 利器: 用AI比赛助手降维打击数学建模

数学建模作为一个热门但又具有挑战性的赛道,在保研、学分加分、简历增色等方面具有独特优势。近年来,随着AI技术的发展,特别是像GPT-4模型的应用,数学建模的比赛变得不再那么“艰深”。通过利用AI比赛助手,不仅可以大大提升团队效率,还能有效提高比赛获奖几率。本文将详细介绍如何通过AI比赛助手完成数学建模比赛,并结合实例展示其强大功能。 一、AI比赛助手的引入 1. 什么是AI比赛助手? AI比

解决RuntimeError: Numpy is not available

运行项目时,遇到RuntimeError: Numpy is not available 这是因为Numpy 版本太高,将现有Numpy卸载 pip uninstall numpy 安装numpy=1.26.4,解决此问题 pip install numpy=1.26.4 -i https://pypi.tuna.tsinghua.edu.cn/simple

SVD降维

文章目录 一、SVD降维的基本原理二、SVD降维的步骤三、SVD降维的优点四、SVD降维的应用五、代码应用六、SVD降维的局限性 一、SVD降维的基本原理 SVD是线性代数中的一种技术,它将一个矩阵A分解为三个矩阵的乘积:A = UΣV^T。其中,U和V是正交矩阵,Σ是对角矩阵,对角线上的元素称为奇异值。这些奇异值表示了矩阵A在各个方向上的“重要性”或“能量”。 在降维过程中,

6.科学计算模块Numpy(3)对ndarray数组的常用操作

引言 众所周知,numpy能作为python中最受欢迎的数据处理模块,脱离不了它最核心的部件——ndarray数组。那么,我们今天就来了解一下numpy中对ndarray的常用操作。 通过阅读本篇博客你可以: 1.掌握ndarray数组的切片和copy 2.学会如何改变ndarray的数组维度 3.掌握数组的拼接 一、ndarray数组的切片和copy 1.ndarray数组的切片

《机器学习》PCA数据降维 推导、参数讲解、代码演示及分析

目录 一、主成分分析 1、什么是主成分分析? 2、什么是降维? 3、如何进行主成分分析         1)数据标准化         2)计算协方差矩阵         3)计算特征值和特征向量         4)选择主成分         5)构建投影矩阵         6)数据降维 4、为什么要进行主成分分析         1)数据可视化         2)

python科学计算:NumPy 简介与安装

1 NumPy 是什么? NumPy(Numerical Python 的简称)是 Python 语言中最为广泛使用的科学计算库。它支持多维数组和矩阵运算,并提供丰富的数学函数库,使得数据处理和数值计算变得更加高效。 NumPy 的核心是提供了一个强大的 ndarray 对象,这是一种用于存储同质数据的多维数组,能够快速执行数值运算。与 Python 原生的列表相比,NumPy 数组的计算速度

python科学计算:NumPy 基础操作

1 创建数组(ndarray) NumPy 的核心对象是 ndarray,它是一个多维数组,用于存储同质数据(即所有元素的类型相同)。我们可以通过多种方式创建数组,以下是一些常见的方法: 1.1 使用 array() 函数 array() 函数是创建 NumPy 数组的基本方法。可以通过传入一个 Python 列表或嵌套列表来创建数组。 import numpy as np# 创建一维数组