Numpy库中数组的基本操作函数
Numpy(Numerical Python)是一个开源的Python扩展库,它提供了高效的多维数组和向量操作函数,是Python科学计算的重要基础库之一。在Numpy库中,数组是最基本的数据类型,它可以是一维、二维、三维甚至更高维的数组。本文将介绍Numpy库中数组的基本操作函数。
1.创建数组
Numpy库提供了许多函数用于创建数组,其中最常用的是array函数。该函数将Python列表转换为数组:
import numpy as np a = np.array([1, 2, 3])
此外,Numpy库还提供了zeros、ones、empty、arange、linspace等函数用于创建指定形状和数据类型的数组:
b = np.zeros((3, 4)) c = np.ones((2, 3), dtype=int) d = np.empty((2, 2)) e = np.arange(0, 10, 2) f = np.linspace(0, 1, 5)
2.数组属性
Numpy的数组对象具有很多有用的属性,如形状shape、维数ndim、元素个数size、数据类型dtype等:
print(a.shape) #=> (3,) print(a.ndim) #=> 1 print(a.size) #=> 3 print(a.dtype) #=> int64
3.改变数组形状
有时候,需要改变数组的形状以便进行计算。Numpy库提供了reshape函数、flatten函数和ravel函数用于改变数组形状:
g = np.arange(24).reshape(4, 6) h = g.flatten() i = g.ravel()
reshape函数可以将数组转换为指定形状的数组,flatten函数可以将多维数组转换为一维数组,ravel函数也可以将多维数组转换为一维数组,但它使用的是原数组的视图,因此在修改时可能会影响原数组。
4.数组切片和索引
Numpy的切片和索引操作与Python列表类似,但更加灵活和高效。可以使用切片操作符[:]来提取数组的子集,也可以使用布尔索引、整数索引、花式索引等方式进行高级索引。例如:
j = np.arange(10) j[1:5:2] #=> [1, 3] j[[1, 3, 5]] #=> [1, 3, 5] mask = j > 5 j[mask] #=> [6, 7, 8, 9]
5.数组运算
Numpy提供了许多函数用于基本的数组运算,如加、减、乘、除、取模、幂等运算。这些运算函数都是在元素级别上进行的,也就是说对应位置上的元素进行运算。例如:
k = np.array([1, 2, 3]) l = np.array([4, 5, 6]) k + l #=> [5, 7, 9] k - l #=> [-3, -3, -3] k * l #=> [4, 10, 18] l / k #=> [4.0, 2.5, 2.0] l % k #=> [0, 1, 0] k ** 2 #=> [1, 4, 9]
6.数组聚合函数
数组聚合函数可以在整个数组上进行计算,并返回一个标量结果。Numpy提供了许多聚合函数,如sum、mean、std、var、min、max、argmin、argmax等函数。这些函数都可以接受一个axis参数来指定计算轴方向。例如:
m = np.arange(24).reshape(4, 6) np.sum(m) #=> 276 np.mean(m, axis=0) #=> [9.0, 10.0, 11.0, 12.0, 13.0, 14.0] np.std(m, axis=1) #=> [1.70782513, 1.70782513, 1.70782513, 1.70782513] np.argmax(m) #=> 23
7.广播机制
广播机制是一种非常方便的Numpy功能,它允许在不同形状的数组之间进行计算,而不需要对它们进行显式的重复操作。例如:
n = np.array([1, 2, 3]) o = np.arange(9).reshape(3, 3) n + o #=> [[1, 3, 5], [4, 6, 8], [7, 9, 11]]
在此例中,数组n被视为形状为(3,1)的列向量,数组o被视为形状为(3,3)的矩阵。在运算过程中,n被自动地重复以与o的形状匹配,然后运算在对应位置上进行。
总结
Numpy是Python科学计算的重要基础库之一,其中的数组操作函数是非常强大和灵活的。本文介绍了Numpy库中数组的基本操作函数,包括创建数组、数组属性、改变数组形状、数组切片和索引、数组运算、数组聚合函数和广播机制。这些操作函数可以让我们在进行数据处理和科学计算时更加高效和便捷。
