前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【深度学习】 NumPy详解(一):创建数组的n个函数

【深度学习】 NumPy详解(一):创建数组的n个函数

作者头像
Qomolangma
发布2024-07-29 21:31:35
770
发布2024-07-29 21:31:35
举报
文章被收录于专栏:深度学习

一、前言

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版本
代码语言:javascript
复制
 python --version 
  • 运行下述代码检查Python、NumPy版本
代码语言:javascript
复制
import sys
import numpy as np

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

三、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代表了一个多维的数组,可以存储相同类型的元素。

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

1. 创建数组

a. 使用numpy.array函数:

可以使用numpy.array函数从Python列表或元组创建数组。

代码语言:javascript
复制
import numpy as np

# 从列表创建一维数组
arr1 = np.array([1, 2, 3, 4, 5])

# 从列表创建二维数组
arr2 = np.array([[1, 2, 3], [4, 5, 6]])
b. 使用numpy.zeros函数

可以使用numpy.zeros函数创建指定形状的全零数组。

代码语言:javascript
复制
import numpy as np

# 创建形状为(2, 3)的全零数组
zeros_arr = np.zeros((2, 3))
代码语言:javascript
复制
array([[0., 0., 0.],
       [0., 0., 0.]])
c. 使用numpy.ones函数

可以使用numpy.ones函数创建指定形状的全一数组。

代码语言:javascript
复制
import numpy as np

# 创建形状为(3, 3)的全一数组
ones_arr = np.ones((3, 3))
d. 使用numpy.arange函数

可以使用numpy.arange函数创建等差数列数组。

代码语言:javascript
复制
import numpy as np

# 创建从0到9的等差数列数组,步长为2
arange_arr = np.arange(0, 10, 2)
e. 使用numpy.linspace函数

可以使用numpy.linspace函数创建指定起始值、终止值和元素个数的等差数列数组。

代码语言:javascript
复制
import numpy as np

# 创建从0到1的等差数列数组,包含5个元素
linspace_arr = np.linspace(0, 1, 5)
f. 使用numpy.eye函数

可以使用numpy.eye函数创建指定大小的单位矩阵。

代码语言:javascript
复制
import numpy as np

# 创建3x3的单位矩阵
eye_arr = np.eye(3)
g. 使用numpy.random模块

numpy.random模块提供了多种随机数生成函数,可以用来创建具有随机值的数组。

代码语言:javascript
复制
import numpy as np

# 创建形状为(2, 2)的随机数数组
random_arr = np.random.random((2, 2))

# 创建形状为(3, 3)的随机整数数组(范围为0到9)
random_int_arr = np.random.randint(0, 10, (3, 3))
h. 使用numpy.full函数

可以使用numpy.full函数创建指定形状和填充值的数组。

代码语言:javascript
复制
import numpy as np

# 创建形状为(2, 2)且填充值为7的数组
full_arr = np.full((2, 2), 7)
代码语言:javascript
复制
array([[7, 7],
       [7, 7]])
i. 使用numpy.copy函数

可以使用numpy.copy函数从现有数组创建一个副本。

代码语言:javascript
复制
import numpy as np

# 创建arr的副本
arr_copy = np.copy(arr)
j. 使用numpy.empty函数

可以使用numpy.empty函数创建指定形状的未初始化数组,数组的元素值将是内存中的任意值。

代码语言:javascript
复制
import numpy as np

# 创建形状为(2, 2)的未初始化数组
empty_arr = np.empty((2, 2))
代码语言:javascript
复制
empty_arr
Out[25]: 
array([[0.27012839, 0.50087714],
       [0.03642221, 0.90975097]])
k. 使用numpy.diag函数

可以使用numpy.diag函数创建对角矩阵或从给定数组的对角线元素创建数组。

代码语言:javascript
复制
import numpy as np

# 创建3x3的对角矩阵,对角线元素为[1, 2, 3]
diag_arr = np.diag([1, 2, 3])

# 从给定数组的对角线元素创建数组
arr = np.array([1, 2, 3])
diag_from_arr = np.diag(arr)
代码语言:javascript
复制
diag_from_arr
Out[27]: 
array([[1, 0, 0],
       [0, 2, 0],
       [0, 0, 3]])
l. 使用numpy.tile函数

可以使用numpy.tile函数通过重复数组来创建新数组。

代码语言:javascript
复制
import numpy as np

# 创建重复的一维数组
arr = np.array([1, 2, 3])
tiled_arr = np.tile(arr, 2)

# 创建重复的二维数组
arr2d = np.array([[1, 2], [3, 4]])
tiled_arr2d = np.tile(arr2d, (2, 3))
代码语言:javascript
复制
tiled_arr
Out[29]: array([1, 2, 3, 1, 2, 3])
tiled_arr2d
Out[30]: 
array([[1, 2, 1, 2, 1, 2],
       [3, 4, 3, 4, 3, 4],
       [1, 2, 1, 2, 1, 2],
       [3, 4, 3, 4, 3, 4]])
m. 使用numpy.meshgrid函数

可以使用numpy.meshgrid函数创建一个多维坐标网格。

代码语言:javascript
复制
import numpy as np

# 创建一个二维坐标网格
x = np.array([1, 2, 3])
y = np.array([4, 5])
X, Y = np.meshgrid(x, y)
代码语言:javascript
复制
X
Out[32]: 
array([[1, 2, 3],
       [1, 2, 3]])
Y
Out[33]: 
array([[4, 4, 4],
       [5, 5, 5]])
n. 使用numpy.fromfunction函数

可以使用numpy.fromfunction函数根据元素的索引值创建数组。

代码语言:javascript
复制
import numpy as np

# 创建一个形状为(3, 3)的数组,根据元素的索引值计算元素值
def func(x, y):
    return x + y

arr = np.fromfunction(func, (3, 3))
代码语言:javascript
复制
arr
Out[35]: 
array([[0., 1., 2.],
       [1., 2., 3.],
       [2., 3., 4.]])
o. 使用numpy.loadtxt函数

可以使用numpy.loadtxt函数从文本文件中加载数据创建数组。

代码语言:javascript
复制
import numpy as np

# 从文本文件加载数据创建数组
arr = np.loadtxt('data.txt')
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-11-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、前言
  • 二、实验环境
  • 三、NumPy
    • 0. 多维数组对象(ndarray)
      • a. 多维数组的属性
    • 1. 创建数组
      • a. 使用numpy.array函数:
      • b. 使用numpy.zeros函数
      • c. 使用numpy.ones函数
      • d. 使用numpy.arange函数
      • e. 使用numpy.linspace函数
      • f. 使用numpy.eye函数
      • g. 使用numpy.random模块
      • h. 使用numpy.full函数
      • i. 使用numpy.copy函数
      • j. 使用numpy.empty函数
      • k. 使用numpy.diag函数
      • l. 使用numpy.tile函数
      • m. 使用numpy.meshgrid函数
      • n. 使用numpy.fromfunction函数
      • o. 使用numpy.loadtxt函数
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档