本文共 2268 字,大约阅读时间需要 7 分钟。
Numpy入门与实践指南
1. 创建Numpy对象
Numpy的核心便是其强大的N维数组对象(ndarray)。
维度(dimensions)决定了数组的轴数量,而秩(rank)则指数组的轴的个数。Numpy最重要的功能之一是通过array()函数将各种输入数据(如列表、元组、数组或其他序列类型)转换为ndarray。默认情况下,函数会根据输入数据推断数据类型或直接复制输入内容。例如: import numpy as npdata = [[1, 2, 3], [2, 3, 4], [4, 5, 6]]ndarray_object = np.array(data)
通过指定形状和数据类型,可以快速创建满足需求的数组:
ndarray_object = np.ones((3, 4)) # 创建3x4的全1数组ndarray_object = np.zeros((3, 4)) # 创建3x4的全0数组
此外,asarray()函数可以将输入转换为ndarray(若输入已经是ndarray则不复制):
import numpy as nparr = np.asarray([1, 2, 3, 4, 5])
range()的扩展版本arrange()可以返回一个ndarray:
arr = np.arange(10) # 返回[0, 1, 2, ..., 9]
2. 数据类型管理
Numpy的dtype属性决定了如何解释数组中的数据。需要注意的是,直接修改数组的数据类型是不可行的,必须使用astype()方法进行转换:
arr = np.array([1, 2, 3], dtype=np.float64)arr = arr.astype(np.int32) # 将数组转换为整数类型
3. 数组与标量的运算
Numpy支持数组间和标量间的算术运算,这些运算会自动扩展到数组的所有元素。
例如:a = np.array([1, 2, 3])b = np.array([4, 5, 6])c = a + b # 结果为[5, 7, 9]c = a * 2 # 结果为[2, 4, 6]
同时,数组与标量的运算也会自动扩展到所有元素:
a = np.array([1, 2, 3])b = 2 * a # 结果为[2, 4, 6]
当运算涉及不同大小的数组时,Numpy会自动进行广播(broadcasting)操作,确保运算可以正确进行。
4. 基本索引与切片
Numpy的数组支持灵活的索引和切片操作。
例如:a = np.array([1, 2, 3, 4, 5])b = a[1:3] # 切片结果为[2, 3]
切片操作返回一个新数组,而不是原数组的视图。若需要复制切片内容,可以使用copy()方法:
c = b[1:3].copy() # 复制切片内容
5. 数组转置与轴对换
通过reshape()方法,可以改变数组的形状。例如:
a = np.arange(15).reshape((3, 5))a
转置数组可以通过transpose()方法实现:
a = a.transpose() # 转置为(5, 3)
6. 函数与方法总览
Numpy提供了丰富的函数和方法来辅助数组操作。以下是一些常用工具:
创建数组:
ones(), zeros(), empty(), ones_like(), zeros_like() arr = np.ones((3, 4)) # 创建3x4的全1数组arr = np.empty((2, 2)) # 创建2x2的空数组
数据类型转换:
astype(), atleast_1d(), atleast_2d(), atleast_3d()数组操作:
stack(), concatenate(), diagonal(), split(), join()数组索引:
take(), drop(), item()数组变换:
ravel(), reshape(), repeat(), resize(), squeeze()数组分析:
argmax(), argmin(), argsort(), max(), min()元素操作:
choose(), compress(), cumsum(), cumprod(), sum()统计与数学运算:
mean(), std(), var(), cov()线性代数操作:
dot(), cross(), outer()7. 布尔数组操作
布尔数组的创建与处理也是Numpy的一大特点。
例如:a = np.array([1, 2, 3, 4, 5])b = a > 2 # 创建布尔数组,表示哪些元素大于2
布尔数组的运算需要使用&(与)和|(或)运算符,而非Python的and和or:
c = b & a > 3 # 结果为True表示元素大于3
8. 数组转置与轴对换
通过reshape()方法,可以改变数组的形状。例如:
a = np.arange(15).reshape((3, 5))a
转置数组可以通过transpose()方法实现:
a = a.transpose() # 转置为(5, 3)
总结
通过上述内容,可以看到Numpy在数组操作、数据类型管理、数组与标量运算等方面的强大功能。这些工具能够极大地提高数据处理效率,适用于科学计算、数据分析等领域。
转载地址:http://cvlfk.baihongyu.com/