Python开发

python numpy 教程

这篇文章主要介绍了Python Numpy库常见用法,结合实例形式详细Fenix了Python numpy库基本功能、原理以及数组常见操作技巧,需要的朋友可以参考下

本文实例讲述了Python Numpy库常见用法。分享给大家供大家参考,具体如下:

1、简介Numpy是一个常用的Python科学技术库,通过它可以快速对数组进行操作,包括形状操作、排序、选择、输入输出、离散傅立叶变换、基本线性代数,基本统计运算和随机模拟等。许多Python库和科学计算的软件包都使用Numpy数组作为操作对象,或者将传入的Python数组转化为Numpy数组,因此在Python中操作数据离不开Numpy。

Numpy的核心是ndarray对象,由Python的n维数组封装而来,但通过C语言预编译相关的数组操作,因此比原生Python具有更高的执行效率,但仍然使用Python语言编码,这样就同时具有简洁的代码和高效的运行速度。ndarry与数组有些区别值得注意,numpy数组中的元素都具有相同的类型,并且在创建时就确定了固定的大小,这与Python数组对象可以动态增长不同。

2、数组对象2.1、属性Numpy对象的形式是同构多维数组,数组的维度称为轴(axis),每个维度上元素的个数称为轴的长度。例如下面是一个2×3的二维数组arr,第一轴长度为3,第二轴长度为2

arr = [[ 1., 0., 0.],[ 0., 1., 2.]]arr数组对象常用的属性如下:

# 数组轴的个数arr.ndim# 数组维度及长度,例如2×3的数组其shape为(2, 3)arr.shape# 数组元素的总个数arr.size# 数组中元素的数据类型arr.dtype# 数组中元素所占字节数arr.itemsize2.2、创建数组可以通过array()方法包裹普通python数组将其转化为numpy数组,通过dtype=规定元素的数据类型。数组可以是二维等高维数组,也可以是元组的形式。

如果需要填充已知大小的数组可以使用函数zeros(),将元素都填充为0,或者ones()将元素填充为1,empty()将元素填充为随机数

arange(a,b,c)函数用于从a到b每隔c长度生成一个数组元素。linspace(a,b,c)函数用于在a到b之间生成c个数组元素

# 普通数组转化为numpy数组a1 = np.array([2, 3, 4], dtype=float)print(a1)# 将元组数组转化为二维numpy数组a2 = np.array([(1, 2, 3), (3, 4, 5)])print(a2)# 将3×3的数组用1填充a3 = np.ones((3, 3))print(a3)# 从1到10,每隔2生成一个元素a4 = np.arange(1, 10, 2)print(a4)# 在1到12之间生成4个元素a5 = np.linspace(1, 12, 4, dtype=int)print(a5)”’普通数组转化为numpy对象:[2. 3. 4.]元组数组:[[1 2 3][3 4 5]]用1填充数组:[[1. 1. 1.][1. 1. 1.][1. 1. 1.]]从1到10每隔2生成一个元素:[1 3 5 7 9]在1到12之间生成4个元素:[ 1 4 8 12]”’2.3、数组操作算术运算符可以直接运用在矩阵上,其结果是将运算应用到每个元素上,例如矩阵A*B就是每个元素对应相乘,矩阵的乘法运算使用的是@符号

A = np.array([[1, 1],[0, 1]])B = np.array([[2, 0],[3, 4]])print(A * B)print(A @ B)”’矩阵元素对应相乘:[[2 0][0 4]]矩阵的乘法:[[5 4][3 4]]”’numpy中有些函数应用于整个数组,例如求和sum、最大值max、最小值min。如果在这些参数中指定了某个轴,则应用于指定轴。

还有一些函数应用于数组中的具体元素,例如求sin、cos、exp、开方sqrt等,这些函数叫做通函数(ufunc)

a = np.array([[0, 1, 2, 3],[4, 5, 6, 7],[8, 9, 10, 11]])print(a.max()) # 求整体的最大值,结果为11print(a.sum(axis=0)) # 求每一列的和,结果为:[12 15 18 21]print(np.sqrt(a)) # 数组每个元素求开方numpy中的数组同python中的list一样可以进行索引、切片和迭代操作。数组a[x]代表访问数组a下标为x的元素,一维数组a[x:y]代表访问数组从x到y的元素,如果省略x代表从头开始,省略y代表直到结尾。a[x:y:a]代表从x到y每隔a个元素取一个值,如果a为负数,代表逆序取值。

可以通过for循环迭代多为数组,其内容为低一维度的子数组,如果希望遍历每一个子元素,可以使用flat属性。

Similar Posts

发表评论

邮箱地址不会被公开。 必填项已用*标注