Python:学习Numpy,收藏这一篇文章就Go了

本文详述了Python的Numpy库,包括如何创建Numpy数组,如从已有数据、随机数生成,以及多维数组的构造。介绍了数组的截取、算术运算,特别是点积运算,并展示了数组变形和合并的方法。Numpy的高速运算能力在科学计算和深度学习中具有显著优势。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Numpy

Numpy全称Numerical Python。它提供了2种基本的对象:ndarray与ufunc。

ndarray是存储单一数据的多维数组,它相对于list列表可以快速的节省空间,提供数组化的算数运算和高级的广播功能。

ufunc是能够对数组进行处理的函数,这些标准的数学函数对整个数组的数据进行快速运算,且不需要编写循环。

Numpy其他优点:

  1. 它是读取/写入磁盘上的阵列数据和操作存储器映像文件的工具
  2. 它具有线性代数、随机数生成以及傅里叶变换的能力
  3. 它集成了C、C++、Fortran代码的工具

虽然Numpy库具有很多的优点,但是其默认不在标准库中,如果你直接安装anaconda,它会自带Numpy库。

但是,如果你是直接安装的Python工具,那么需要通过如下命令安装之后才能使用,具体命令如下所示:

pip install numpy

下面,我们详细介绍Numpy库的使用方式。

生成Numpy数组

从已有数据中创建数组

一般来说,对于一些基础的数据,我们在Python中都是直接使用list。

而如果这个时候,需要进行大量的运算,我们不妨将list列表转换为numpy数组进行计算。转换的方式如下所示(我们使用numpy时一般将其重命名np使用):

import numpy as np

list1 = [1, 2, 3, 4, 5, 6, 7, 8, 9]
nd = np.array(list1)
print("数据:", nd)
print("类型:", type(nd))

运行之后,效果如下:
类型转换

通过random生成数组

在深度学习中,我们经常会通过随机数创建一些数组进行测试,比如创建符合正态分布的随机数,又或者打乱数据等等。

而这些都可以通过numpy.random模块进行操作。下面,博主列出了一个常用随机函数表格:

函数 意义
numpy.random.random 生成0到1之间的随机数
numpy.random.uniform 生成均匀分布的随机数
numpy.random.randn 生成标准正态分布的随机数
numpy.random.randint 生成随机整数
numpy.random.normal 生成正态分布
numpy.random.shuffle 随机打乱顺序
numpy.random.seed 设置随机数种子
numpy.random.random_sample 生成随机的浮点数

下面,我们举一个简单的使用例子:

import numpy as np
#生成3行3列0到1的随机数
nd1 = np.random.random([3, 3])
print(nd1)
#生成3行3列0到1的浮点数
nd2 = np.random.random_sample([3, 3])
print(nd2)
#打乱nd2的数据
np.random.shuffle(nd2)
print(nd2)

运行之后,效果如下:
随机数数组

创建多维数组

在上面随机数的数组创建中,我们看到了其实numpy可以创建多维数组,而如果不使用随机数的话,我们还可以通过下面表格的函数创建numpy数组。

函数 意义
np.zeros((3,4)) 创建3行4列全部为0的数组
np.ones((3,4)) 创建3行4列全部为1的数组
np.empty((2,4)) 创建2行4列的空数组,空数组中的值并不为0,而是为初始化的垃圾值
np.zeros_like(nd) 以nd相同的维度创建一个全为0的数组
np.ones_like(nd) 以nd相同的维度创建一个全为1的数组
np.empty_like(nd) 以nd相同的维度创建空数组
np.eye(5) 创建一个5*5的矩阵,对角线为1,其余为0
np.full((2,2),111) 创建一个2行2列全是111的数组,第2个参数为指定值

下面,我们随机举些列子:

import numpy as np
#创建2*3的空数组
nd1 = np.empty((2, 3))
print("垃圾值:", nd1)
#创建5*5,值全为111的数组
nd2 = np.full((5, 5), 111)
print(nd2)
#创建5*5值全为0的数组
nd3 = np.zeros((5, 5))
print(nd3)
评论 39
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

李元静

您的鼓励就是我创作的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值