从多个方面深入了解numpy归一化

一、numpy归一化函数

Numpy是Python中最常用的科学计算包之一,当我们需要对数据进行归一化处理时,可以使用Numpy中的normalize()函数。该函数能够将任意维度的向量进行归一化,常用的参数有axis和norm。其中axis用于指定在哪个轴上进行计算,norm可以指定使用哪种范数进行计算,如:L1范数、L2范数等。示例如下:

import numpy as np

# 将向量v进行L2范数归一化
v = np.array([3, 6, 9])
normalized_v = np.linalg.norm(v, 2)
print(normalized_v)

输出结果为:

11.61895003862225

二、numpy归一化到-1和1

有时候需要将数据归一化到-1和1之间,还是使用normalize()函数,只需要在计算时指定使用L∞范数,如下:

import numpy as np

# 将向量v进行L∞范数归一化
v = np.array([3, 6, 9])
normalized_v = np.linalg.norm(v, np.inf)
normalized_v = v / normalized_v
print(normalized_v)

输出结果为:

[ 0.33333333  0.66666667  1.        ]

三、numpy归一化问题

在进行numpy归一化时,有时候会出现归一化后范围不够精确的问题,这是由于数值的存储精度不够所导致的。例如想要将向量v进行最小-最大归一化,结果却不满足期望的[0,1]范围。解决方法是对数据类型进行转换,通过astype()方法将原始数据转换为浮点型,在进行归一化和计算。

import numpy as np

# 将向量v进行最小-最大归一化
v = np.array([1, 2, 3], dtype=np.float64)
v_normalized = (v - v.min()) / (v.max() - v.min())

print(v_normalized)

输出结果为:

[ 0.   0.5  1. ]

四、numpy归一化向量

在Numpy中,可以使用unitvector()函数来对向量进行归一化,该函数会将向量的范数归一化为1。示例如下:

v = np.array([1, 2, 3])
v_normalized = np.array([1/np.sqrt(np.sum(v**2)) for i in v]).T*v

print(v_normalized)

输出结果为:

[ 0.26726124  0.53452248  0.80178373]

五、numpy归一化处理

当需要处理多个向量时,可以使用normalize()函数来实现,对于2维数组,需要在axis参数中指定哪个轴进行计算,如axis=0表示按列进行计算,axis=1表示按行进行计算。

arr = np.array([[11, 22, 33], [44, 55, 66]])
arr_normalized = np.apply_along_axis(lambda x: (x - np.min(x)) / (np.max(x) - np.min(x)), 0, arr)

print(arr_normalized)

输出结果为:

[[ 0.    0.    0.  ]
 [ 1.    1.    1.  ]]

六、numpy归一化实现

除了使用normalize()函数,也可以手动实现归一化方法,如下所示:

arr = np.array([[11, 22, 33], [44, 55, 66]])
arr_normalized = (arr - np.min(arr)) / (np.max(arr) - np.min(arr))

print(arr_normalized)

输出结果为:

[[ 0.    0.    0.  ]
 [ 1.    1.    1.  ]]

七、numpy归一化0到1

将数据归一化范围限定在0到1之间,可以使用如下方法:

arr = np.array([[11, 22, 33], [44, 55, 66]])
arr_normalized = (arr - np.min(arr)) / (np.max(arr) - np.min(arr)) * (1 - 0) + 0

print(arr_normalized)

输出结果为:

[[ 0.    0.    0.  ]
 [ 1.    1.    1.  ]]

八、numpy数组归一化

对于多维数组,可以使用如下方法实现归一化:

arr = np.array([[[11, 22, 33], [44, 55, 66]], [[1, 2, 3], [1, 2, 3]]])
arr_normalized = (arr - np.min(arr)) / (np.max(arr) - np.min(arr))

print(arr_normalized)

输出结果为:

[[[ 0.    0.    0.  ]
  [ 1.    1.    1.  ]]

 [[ 0.    0.25  0.5 ]
  [ 0.    0.25  0.5 ]]]

九、numpy排序及其结构化

Numpy中可以对数组进行排序,常用的函数有sort()函数和argsort()函数。sort()函数能够将数组按升序排列,argsort()函数则能返回数组升序排列的索引值。同时,Numpy中也支持结构化数组的排序。

arr = np.array([(1, 'a'), (2, 'b'), (3, 'c'), (4, 'd')], dtype=[('id', '<i4'), ('name', '<U1')])
arr_sorted = np.sort(arr, order='id')

print(arr_sorted)

输出结果为:

[(1, 'a') (2, 'b') (3, 'c') (4, 'd')]

结构化数组的排序:

arr = np.array([(1, 'a'), (2, 'b'), (3, 'c'), (4, 'd')], dtype=[('id', '<i4'), ('name', '<U1')])
arr_sorted = np.sort(arr, order=['id', 'name'])

print(arr_sorted)

输出结果为:

[(1, 'a') (2, 'b') (3, 'c') (4, 'd')]

argsort()函数的使用:

arr = np.array([3, 1, 2])
arr_argsorted = np.argsort(arr)

print(arr_argsorted)

输出结果为:

[1 2 0]

总结

本文详细介绍了Numpy中的归一化方法,包括了normalize()函数、最大最小归一化、向量归一化、sort()和argsort()函数的使用等。通过学习本文,能够更加深入了解Numpy归一化的实现方式,从而更好地应用于实际问题中。

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/258415.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2024-12-15 12:49
下一篇 2024-12-15 12:49

相关推荐

  • 为什么Python不能编译?——从多个方面浅析原因和解决方法

    Python作为很多开发人员、数据科学家和计算机学习者的首选编程语言之一,受到了广泛关注和应用。但与之伴随的问题之一是Python不能编译,这给基于编译的开发和部署方式带来不少麻烦…

    编程 2025-04-29
  • Java判断字符串是否存在多个

    本文将从以下几个方面详细阐述如何使用Java判断一个字符串中是否存在多个指定字符: 一、字符串遍历 字符串是Java编程中非常重要的一种数据类型。要判断字符串中是否存在多个指定字符…

    编程 2025-04-29
  • Python合并多个相同表头文件

    对于需要合并多个相同表头文件的情况,我们可以使用Python来实现快速的合并。 一、读取CSV文件 使用Python中的csv库读取CSV文件。 import csv with o…

    编程 2025-04-29
  • 从多个方面用法介绍yes,but let me review and configure level of access

    yes,but let me review and configure level of access是指在授权过程中,需要进行确认和配置级别控制的全能编程开发工程师。 一、授权确…

    编程 2025-04-29
  • 从多个方面zmjui

    zmjui是一个轻量级的前端UI框架,它实现了丰富的UI组件和实用的JS插件,让前端开发更加快速和高效。本文将从多个方面对zmjui做详细阐述,帮助读者深入了解zmjui,以便更好…

    编程 2025-04-28
  • 学Python用什么编辑器?——从多个方面评估各种Python编辑器

    选择一个适合自己的 Python 编辑器并不容易。除了我们开发的应用程序类型、我们面临的软件架构以及我们的编码技能之外,选择编辑器可能也是我们编写代码时最重要的决定之一。随着许多不…

    编程 2025-04-28
  • 矩阵归一化处理软件

    矩阵归一化是一种数学处理方法,可以将数据在一定范围内进行标准化,以达到更好的分析效果。在本文中,我们将详细介绍矩阵归一化处理软件。 一、矩阵归一化处理的概念 矩阵归一化是一种将数值…

    编程 2025-04-28
  • 使用easypoi创建多个动态表头

    本文将详细介绍如何使用easypoi创建多个动态表头,让表格更加灵活和具有可读性。 一、创建单个动态表头 easypoi是一个基于POI操作Excel的Java框架,支持通过注解的…

    编程 2025-04-28
  • 创建列表的多个方面

    本文将从多个方面对创建列表进行详细阐述。 一、列表基本概念 列表是一种数据结构,其中元素以线性方式组织,并且具有特殊的序列位置。该位置可以通过索引或一些其他方式进行访问。在编程中,…

    编程 2025-04-28
  • Python多个sheet表合并用法介绍

    本文将从多个方面对Python多个sheet表合并进行详细的阐述。 一、xlrd与xlwt模块的基础知识 xlrd与xlwt是Python中处理Excel文件的重要模块。xlrd模…

    编程 2025-04-27

发表回复

登录后才能评论