【深度学习】 NumPy详解(三):数组数学(元素、数组、矩阵级别的各种运算)

这篇具有很好参考价值的文章主要介绍了【深度学习】 NumPy详解(三):数组数学(元素、数组、矩阵级别的各种运算)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一、前言

二、实验环境

三、NumPy

0、多维数组对象(ndarray)

多维数组的属性

1、创建数组

2、数组操作

3、数组数学

1. 元素级别

a. 直接运算

b. 加法:np.add()函数

c. 减法:np.subtract()函数

d. 乘法:np.multiply()函数

e. 除法:np.divide()函数

f. 幂运算:np.power()函数

g. 取余与求商:

2. 数组级别

a. 平均值:np.mean()

b. 最大值和最小值:np.max()、np.min()

c. 求和:np.sum()

d. 标准差和方差:np.std()、np.var()

3. 矩阵级别

a. 矩阵乘法

b. 矩阵转置

c. 矩阵求逆

d. 行列式

e. 特征值和特征向量

f. 矩阵的迹

g. 点积

4. 其他数学函数

a. 三角函数

b. 指数和对数函数

c. 取整函数

d. 绝对值

e. 累加和和累积


一、前言

        Python是一种高级编程语言,由Guido van Rossum于1991年创建。它以简洁、易读的语法而闻名,并且具有强大的功能和广泛的应用领域。Python具有丰富的标准库和第三方库,可以用于开发各种类型的应用程序,包括Web开发、数据分析、人工智能、科学计算、自动化脚本等。

        Python本身是一种伟大的通用编程语言,在一些流行的库(numpy,scipy,matplotlib)的帮助下,成为了科学计算的强大环境。本系列将介绍Python编程语言和使用Python进行科学计算的方法,主要包含以下内容:

  • Python:基本数据类型、容器(列表、元组、集合、字典)、函数、类
  • Numpy:数组创建、数组操作、数组数学、广播
  • Matplotlib:绘图,子图,图像
  • IPython:创建笔记本,典型工作流程

二、实验环境

numpy 1.21.6
python 3.7.16
  • 运行下述命令检查Python版本
 python --version 
  • 运行下述代码检查Python、NumPy版本
import sys
import numpy as np

print("Python 版本:", sys.version)
print("NumPy 版本:", np.__version__)

numpy中如何在ndarray数组上执行基本运算,包括算术运算 (加、减、乘、除等)、比较,Python,# NumPy,深度学习,python,numpy

三、NumPy

        NumPy(Numerical Python)是一个用于科学计算的Python库。它提供了一个强大的多维数组对象(ndarray),用于进行高效的数值运算和数据处理。Numpy的主要功能包括:

  1. 多维数组:Numpy的核心是ndarray对象,它是一个多维数组,可以存储同类型的元素。这使得Numpy非常适合处理向量、矩阵和其他多维数据结构。

  2. 数学函数:Numpy提供了许多常用的数学函数,如三角函数、指数函数、对数函数等。这些函数可以直接应用于整个数组,而无需编写循环。

  3. 广播(Broadcasting):Numpy支持不同形状的数组之间的运算,通过广播机制,可以对形状不同的数组进行逐元素的操作,而无需显式地编写循环。

  4. 线性代数运算:Numpy提供了丰富的线性代数运算函数,如矩阵乘法、求解线性方程组、特征值计算等。

  5. 随机数生成:Numpy包含了用于生成各种概率分布的随机数的函数,如均匀分布、正态分布、泊松分布等。

  6. 数据操作:Numpy提供了很多用于操作数组的函数,如切片、索引、排序、去重等。

        Numpy广泛应用于科学计算、数据分析、机器学习等领域。它的高效性和便捷性使得它成为Python数据科学生态系统中不可或缺的组成部分。

0、多维数组对象(ndarray)

        NumPy的ndarray对象是NumPy库中最重要的对象之一,也是进行科学计算的核心数据结构。ndarray代表了一个多维的数组,可以存储相同类型的元素。

多维数组的属性

  • ndarray.shape:返回表示数组形状的元组,例如(2, 3)表示2行3列的数组。
  • ndarray.dtype:返回数组中元素的数据类型,例如intfloatbool等。
  • ndarray.ndim:返回数组的维度数,例如1表示一维数组,2表示二维数组。

1、创建数组

【深度学习】 Python 和 NumPy 系列教程(九):NumPy详解:1、创建数组的n种方式_QomolangmaH的博客-CSDN博客https://blog.csdn.net/m0_63834988/article/details/132782221?spm=1001.2014.3001.5501

2、数组操作

【深度学习】 Python 和 NumPy 系列教程(十):NumPy详解:2、数组操作(索引和切片、形状操作、转置操作、拼接操作)_QomolangmaH的博客-CSDN博客https://blog.csdn.net/m0_63834988/article/details/132830547?spm=1001.2014.3001.5501

3、数组数学

1. 元素级别

        NumPy提供了许多在数组元素级别进行数学运算的函数,例如加法、减法、乘法、除法、幂运算等。这些函数会对数组中的每个元素进行相应的数学计算,并返回一个新的数组作为结果。

a. 直接运算

import numpy as np

arr1 = np.array([1, 2, 3])
arr2 = np.array([4, 5, 6])

# 加法
result = arr1 + arr2
print(result)  # 输出: [5 7 9]

# 减法
result = arr1 - arr2
print(result)  # 输出: [-3 -3 -3]

# 乘法
result = arr1 * arr2
print(result)  # 输出: [4 10 18]

# 除法
result = arr1 / arr2
print(result)  # 输出: [0.25 0.4  0.5]

b. 加法:np.add()函数

import numpy as np

arr1 = np.array([1, 2, 3])
arr2 = np.array([4, 5, 6])

# 数组元素级别的加法
result = np.add(arr1, arr2)
print(result)

输出:

[5 7 9]

c. 减法:np.subtract()函数

import numpy as np

arr1 = np.array([4, 5, 6])
arr2 = np.array([1, 2, 3])

# 数组元素级别的减法
result = np.subtract(arr1, arr2)
print(result)

输出:

[3 3 3]
 

d. 乘法:np.multiply()函数

import numpy as np

arr1 = np.array([1, 2, 3])
arr2 = np.array([4, 5, 6])

# 数组元素级别的乘法
result = np.multiply(arr1, arr2)
print(result)

输出:

[ 4 10 18]
 

e. 除法:np.divide()函数

import numpy as np

arr1 = np.array([4, 6, 8])
arr2 = np.array([2, 3, 4])

# 数组元素级别的除法
result = np.divide(arr1, arr2)
print(result)

输出:

[2. 2. 2.]
 

f. 幂运算:np.power()函数

import numpy as np

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

# 数组元素级别的幂运算
result = np.power(arr, 2)
print(result)

输出:

[1 4 9]

g. 取余与求商:

import numpy as np

arr1 = np.array([7, 8, 9])
arr2 = np.array([2, 3, 4])

# 数组的取余
result = np.mod(arr1, arr2)
print(result)  # 输出: [1 2 1]

# 数组的求商
result = np.divmod(arr1, arr2)
print(result)  # 输出: (array([3, 2, 2]), array([1, 2, 1]))

2. 数组级别

a. 平均值:np.mean()

import numpy as np

arr = np.array([1, 2, 3, 4, 5])

# 计算数组的平均值
mean_value = np.mean(arr)
print(mean_value)

输出:

3.0
 

b. 最大值和最小值:np.max()、np.min()

        使用np.max()np.min()函数分别计算数组的最大值和最小值。

import numpy as np

arr = np.array([1, 2, 3, 4, 5])

# 计算数组的最大值和最小值
max_value = np.max(arr)
min_value = np.min(arr)

print(max_value, min_value)

输出:

5 1

c. 求和:np.sum()

        计算数组所有元素的和

import numpy as np

arr = np.array([1, 2, 3, 4, 5])

# 计算数组的元素和
sum_value = np.sum(arr)
print(sum_value)

输出:

15

d. 标准差和方差:np.std()np.var()

        使用np.std()np.var()函数计算数组的标准差和方差

import numpy as np

arr = np.array([1, 2, 3, 4, 5])

# 计算数组的标准差和方差
std_value = np.std(arr)
var_value = np.var(arr)

print(std_value, var_value)

输出:

1.4142135623730951 2.0

3. 矩阵级别

a. 矩阵乘法

import numpy as np

matrix1 = np.array([[1, 2], [3, 4]])
matrix2 = np.array([[5, 6], [7, 8]])

# 矩阵乘法
result = np.matmul(matrix1, matrix2)
# 或者使用 @ 运算符
# result = matrix1 @ matrix2

print(result)

输出结果为:

[[19 22]
 [43 50]]

b. 矩阵转置

import numpy as np

matrix5 = np.array([[1, 2], [3, 4]])
result = np.transpose(matrix5)
# 或者使用 .T 属性
# result = matrix5.T
print(result)

转置结果:
 

[[1 3]
[2 4]]

c. 矩阵求逆

import numpy as np


matrix6 = np.array([[1, 2], [3, 4]])
result = np.linalg.inv(matrix6)
print(result)

求逆结果为:

[[-2. 1. ]
[ 1.5 -0.5]]

d. 行列式

import numpy as np

matrix7 = np.array([[1, 2], [3, 4]])
result = np.linalg.det(matrix7)
print(result)

行列式结果:

-2.0000000000000004

e. 特征值和特征向量

import numpy as np

matrix8 = np.array([[1, 2], [3, 4]])
eigenvalues, eigenvectors = np.linalg.eig(matrix8)
print("特征值:", eigenvalues)
print("特征向量:", eigenvectors)

输出:

特征值: [-0.37228132 5.37228132]
特征向量: [[-0.82456484 -0.41597356]

f. 矩阵的迹

import numpy as np

matrix9 = np.array([[1, 2], [3, 4]])
result = np.trace(matrix9)
print(result)

输出:

5

g. 点积

        向量的点积是指两个向量对应位置的元素相乘后再求和的运算。

import numpy as np

arr1 = np.array([1, 2, 3])
arr2 = np.array([4, 5, 6])

# 使用 np.dot 函数计算向量的点积
result = np.dot(arr1, arr2)
print(result)  # 输出: 32

# 使用数组对象的 dot 方法计算向量的点积
result = arr1.dot(arr2)
print(result)  # 输出: 32

4. 其他数学函数

a. 三角函数

import numpy as np

arr = np.array([0, np.pi/2, np.pi])

# 正弦函数
result = np.sin(arr)
print(result)  # 输出: [0. 1. 0.]

# 余弦函数
result = np.cos(arr)
print(result)  # 输出: [1. 0. -1.]

# 正切函数
result = np.tan(arr)
print(result)  # 输出: [0. 无穷大 -0.]

b. 指数和对数函数

import numpy as np

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

# 指数函数
result = np.exp(arr)
print(result)  # 输出: [2.71828183 7.3890561  20.08553692]

# 自然对数
result = np.log(arr)
print(result)  # 输出: [0. 0.69314718 1.09861229]

# 以2为底的对数
result = np.log2(arr)
print(result)  # 输出: [0. 1. 1.5849625]

c. 取整函数

import numpy as np

arr = np.array([1.4, 2.7, 4.1])

# 向下取整
result = np.floor(arr)
print(result)  # 输出: [1. 2. 4.]

# 向上取整
result = np.ceil(arr)
print(result)  # 输出: [2. 3. 5.]

# 四舍五入
result = np.round(arr)
print(result)  # 输出: [1. 3. 4.]

d. 绝对值

import numpy as np

arr = np.array([-1, -2, 3, -4, 5])

# 数组元素的绝对值
result = np.abs(arr)
print(result)  # 输出: [1 2 3 4 5]

e. 累加和和累积文章来源地址https://www.toymoban.com/news/detail-769555.html

import numpy as np

arr = np.array([1, 2, 3, 4, 5])

# 累加和
result = np.cumsum(arr)
print(result)  # 输出: [ 1  3  6 10 15]

# 累积积
result = np.cumprod(arr)
print(result)  # 输出: [  1   2   6  24 120]

到了这里,关于【深度学习】 NumPy详解(三):数组数学(元素、数组、矩阵级别的各种运算)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 深度学习中Numpy的一些注意点(多维数组;数据类型转换、数组扁平化、np.where()、np.argmax()、图像拼接、生成同shape的图片)

    深度学习中Numpy的一些注意点(多维数组;数据类型转换、数组扁平化、np.where()、np.argmax()、图像拼接、生成同shape的图片)

    a.shape=(3,2);既数组h=3,w=2 a.shape=(2,3,2);这里第一个2表示axis=0维度上的,三维数组中3,2)数组的个数,这里表示两个(3,2)数组。 这里axis=0指代哪里是很重要的知识点。深度学习中经常压缩一个维度,axis=0。 numpy.squeeze()函数。 语法:numpy.squeeze(a,axis = None);作用是将shape维度为

    2024年01月18日
    浏览(17)
  • Numpy数组和矩阵

    Numpy数组和矩阵

    1.numpy 主要用于高维的数组运算,拥有运算速度快的 数学库 ;Numpy 支持常见的数组和矩阵操作 。Numpy 使用ndarray对象来处理多维数组 ,该对象是一个快速而灵活的大数据容器。 安装 windows: 升级 pip: 安装 Numpy库:(Ubuntu一样) 下载完成后可以在Python文件中 来测试是否安装成

    2023年04月08日
    浏览(7)
  • 【Python 零基础入门】Numpy 常用函数 数组操作 & 数学运算

    【Python 零基础入门】Numpy 常用函数 数组操作 & 数学运算

    Numpy (Numerical Python) 是 Python 编程语言的一个扩展程序库, 支持大量的维度数组与矩阵运算, 并提供了大量的数学函数库. Numpy 利用了多线程数组来存储和处理大型数据集, 从而提供了一个高效的方式来进行数值计算, 特别是对于矩阵预算和线性代数. np.assarray 可以将输入转换为

    2024年02月05日
    浏览(13)
  • Python numpy - 数组与矩阵的运算

    Python numpy - 数组与矩阵的运算

    目录  数组array 一 数组的函数 unique函数  sum函数  max函数 二 数组的加减 三 数组的乘除  矩阵matrix 一 矩阵的生成 二 矩阵的加减 三  矩阵的乘法 创建数组a和b用来运算(至少两个) 数组常用函数 函数 作用 unique() 求数组里的唯一值,输出从小到大排列 sum() 对数组整

    2024年02月11日
    浏览(12)
  • 3、Numpy数组操作---第5节矩阵转置

    本节内容紧接上一篇内容,同属于数组操作的章节。 1、numpy中的数组其实就是线性代数中的矩阵。矩阵是可以进行转置的。ndarray有一个T属性,可以返回这个数组的转置的结果。示例代码如下: 2、另外还有一个方法叫做transpose, 这个方法返回的是一个View,也即修改返回值,

    2024年02月11日
    浏览(14)
  • 【深度学习】 Python 和 NumPy 系列教程(十五):Matplotlib详解:2、3d绘图类型(1):线框图(Wireframe Plot)

    【深度学习】 Python 和 NumPy 系列教程(十五):Matplotlib详解:2、3d绘图类型(1):线框图(Wireframe Plot)

    目录  一、前言 二、实验环境 三、Matplotlib详解  1、2d绘图类型 2、3d绘图类型 0. 设置中文字体 1. 线框图(Wireframe Plot)         Python是一种高级编程语言,由Guido van Rossum于1991年创建。它以简洁、易读的语法而闻名,并且具有强大的功能和广泛的应用领域。Python具有丰富

    2024年02月08日
    浏览(13)
  • 【深度学习】 Python 和 NumPy 系列教程(廿四):Matplotlib详解:2、3d绘图类型(10)3D箱线图(3D Box Plot)

    【深度学习】 Python 和 NumPy 系列教程(廿四):Matplotlib详解:2、3d绘图类型(10)3D箱线图(3D Box Plot)

    目录 一、前言 二、实验环境 三、Matplotlib详解 1、2d绘图类型 2、3d绘图类型 0. 设置中文字体 1. 3D线框图(3D Line Plot) 2. 3D散点图(3D Scatter Plot) 3. 3D条形图(3D Bar Plot) 4. 3D曲面图(3D Surface Plot) 5. 3D等高线图(3D Contour Plot) 6. 3D向量场图(3D Vector Field Plot) 7. 3D表面投影图

    2024年02月03日
    浏览(14)
  • 检查两个数组在维度,形状以及元素值上是否均等价 numpy.array_equiv()

    检查两个数组在维度,形状以及元素值上是否均等价 numpy.array_equiv()

    【小白从小学Python、C、Java】 【计算机等级考试+500强双证书】 【Python-数据分析】 检查两个数组在维度,形状 以及元素值上是否均等价 numpy.array_equiv() [太阳]选择题 请问以下代码中执行语句输出结果依次是? import numpy as np a = np.array([1, 2]) b = np.array([1, 2]) c = np.array([1, 3]) d =

    2024年02月07日
    浏览(12)
  • 矩阵元素相加之和的数学表示

    在科研过程中,会遇到对矩阵全部元素求和的运算,但该运算如何能用更简洁的方式来表示呢? 最简单直接的方式莫过于使用二级 ∑ ∑ bm{sumsum} ∑∑ 嵌套来表示,但这种方式的缺点是显得很臃肿,因此,我们来考虑更加简洁的表示方法。 考虑任意维矩阵 A ∈ C m × n bf{A

    2024年02月13日
    浏览(11)
  • 判断数组中的每个元素是否为正无穷大或负无穷大 numpy.isinf()

    判断数组中的每个元素是否为正无穷大或负无穷大 numpy.isinf()

    【小白从小学Python、C、Java】 【计算机等级考试+500强双证书】 【Python-数据分析】 判断数组中的每个元素 是否为正无穷大或负无穷大 numpy.isinf() [太阳]选择题 请问关于以下代码的最后输出的是? import numpy as np a = np.array([-np.inf,0,np.inf]) print(\\\"【显示】a =\\\",a) print(\\\"【执行】np.i

    2024年02月08日
    浏览(16)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包