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

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

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)


运行之后,效果如下:


arange与linspace生成数组

首先,我们来看看arange函数的定义:

arange([start,]stop[,step,],dtype=None)

其中,start与stop用来指定范围,step指定步长。比如说我们生成一个倒叙的数组[9,8,7,6,5],可以发现它们的步长就是-1。示例如下:

nd = np.arange(9, 4, -1)
print(nd)


这里就不运行了,输入就是[9,8,7,6,5]。


接着,我们再来看看linspace函数的定义:

linspace(start,stop,num=50,endpoint=True,retstep=False,dtype=None)

linspace函数可以根据输入的指定数据范围以及等份数量,自动生成一个线性的等分向量。


简单的理解就是,我们设置一个区间(start,stop),然后再次设定生成num个数据。


那么通过(stop-start+1)/num,就算出了这些数据的步长,而每个数据依次加减这个步长就是2边的数据。


而不需要像arange取指定步长,linspace函数会自己计算出来。示例如下:

nd = np.linspace(9, 4, 6)
print(nd)


这里代表就是9到4输出6个数据,且每个数间隔一样,那么肯定会输出[9,8,7,6,5,4]。


元素的截取

既然创建了Numpy数组,那么我们就需要获取数组中的元素进行操作。那么如果获取Numpy数组中指定的元素呢?这里,博主列出了一个表格:

nd为一维数组时:输出[0 1 2 3 4 5 6 7 8 9](索引0开始)
nd为二维数组时:(索引0开始)
[[ 0  1  2  3  4]
 [ 5  6  7  8  9]
 [10 11 12 13 14]
 [15 16 17 18 19]
 [20 21 22 23 24]]
公式 意义

nd[3]

获取数组的第4个元素,如果为多维数组,获取第4行([3])
nd[3:5] 获取数组的第4个元素到第5个元素([3,4],不包括右边元素5)
nd[1:5:2] 获取数组索引1到索引5步长间隔为2的元素([1,3]),不包括右边元素5
nd[::-2] 获取倒叙,间隔2的元素([9 7 5 3 1])
nd[1:3, 1:3] 获取1,2行,1,2列的数据([[ 6 7][11 12]]),不包括3行,3列
nd[(nd > 3) & (nd < 10)] 获取大于3小于10的数据([4 5 6 7 8 9])
nd[[1,2]] 获取1,2行的所有列数据([[ 5 6 7 8 9][10 11 12 13 14]])
nd[:,1:3] 获取所有行的1到3列([[ 1 2][ 6 7][11 12][16 17][21 22]]),不包括3列


相关文章
|
9天前
|
机器学习/深度学习 前端开发 算法
学习Python需要多久?
【7月更文挑战第6天】学习Python需要多久?
20 5
|
6天前
|
供应链 数据挖掘 Python
后劲真大,我愿称之为学习python的“圣经”
很多小伙伴都在学习Python,但是爱看书的找不到适合自己的,这本书可以完美的解决你的问题,还能帮助到很多需要处理数据,做Excel自动方面的。 学习数据分析的好处众多,无论是对于个人职业发展还是企业的运营决策都具有重要意义。
|
2天前
|
SQL 并行计算 API
Dask是一个用于并行计算的Python库,它提供了类似于Pandas和NumPy的API,但能够在大型数据集上进行并行计算。
Dask是一个用于并行计算的Python库,它提供了类似于Pandas和NumPy的API,但能够在大型数据集上进行并行计算。
19 9
|
4天前
|
机器学习/深度学习 数据采集 算法
Python实现ISSA融合反向学习与Levy飞行策略的改进麻雀优化算法优化支持向量机回归模型(SVR算法)项目实战
Python实现ISSA融合反向学习与Levy飞行策略的改进麻雀优化算法优化支持向量机回归模型(SVR算法)项目实战
|
1天前
|
Cloud Native Java Go
为什么要学习Go语言?
GO logo的核心理念,即简单胜于复杂。使用现代斜体无衬线字体与三条简单的运动线相结合,形成一个类似于快速运动的两个轮子的标记,传达速度和效率。字母的圆形暗示了GO地鼠的眼睛,创造了一个熟悉的形状,让标记和吉祥物很好地搭配在一起。
13 4
|
3天前
|
机器学习/深度学习 数据采集 数据挖掘
解锁 Python 数据分析新境界:Pandas 与 NumPy 高级技巧深度剖析
【7月更文挑战第12天】Python的Pandas和NumPy库助力高效数据处理。Pandas用于数据清洗,如填充缺失值和转换类型;NumPy则擅长数组运算,如元素级加法和矩阵乘法。结合两者,可做复杂数据分析和特征工程,如产品平均销售额计算及销售额标准化。Pandas的时间序列功能,如移动平均计算,进一步增强分析能力。掌握这两者高级技巧,能提升数据分析质量和效率。
17 4
|
4天前
|
机器学习/深度学习 数据采集 算法
Python实现ISSA融合反向学习与Levy飞行策略的改进麻雀优化算法优化支持向量机分类模型(SVC算法)项目实战
Python实现ISSA融合反向学习与Levy飞行策略的改进麻雀优化算法优化支持向量机分类模型(SVC算法)项目实战
|
9天前
|
索引 Python
十分钟学习Python异常处理
在编程过程中,错误和异常是不可避免的。Python提供了强大的异常处理机制,帮助我们捕获和处理运行时错误,使程序更加健壮和可靠。本文将带你在十分钟内快速掌握Python的异常处理基础知识。
|
10天前
|
数据采集 机器学习/深度学习 数据可视化
了解数据科学面试中的Python数据分析重点,包括Pandas(DataFrame)、NumPy(ndarray)和Matplotlib(图表绘制)。
【7月更文挑战第5天】了解数据科学面试中的Python数据分析重点,包括Pandas(DataFrame)、NumPy(ndarray)和Matplotlib(图表绘制)。数据预处理涉及缺失值(dropna(), fillna())和异常值处理。使用describe()进行统计分析,通过Matplotlib和Seaborn绘图。回归和分类分析用到Scikit-learn,如LinearRegression和RandomForestClassifier。
26 3
|
9天前
|
存储 人工智能 数据挖掘
十分钟学习Python基础知识
Python是一种高效、易学且功能强大的编程语言,广泛应用于数据分析、人工智能、Web开发等领域。如果你是编程新手,想要快速入门Python,那么这篇文章将是你的最佳选择。我将在十分钟内带你了解Python的基础知识。