本文共 2567 字,大约阅读时间需要 8 分钟。
numpy 作为一个强大的 Python 库,提供了丰富的功能来处理数组数据。本文将从基础知识出发,逐步介绍 numpy 的核心功能。
在使用 numpy 时,最基本的属性有以下几个:
以下是一个常用的创建指定类型数组的示例:
np.array([1.1, 2.2, 3.3], dtype='float32')
其中,dtype='float32'
参数指定了数组元素的类型,生成的是浮点型数组。
生成数组的功能有以下几种常用方法:
生成 0 和 1 的数组:
np.zeros
创建全 0 的数组,指定形状和数据类型:np.zeros(shape=[3, 4], dtype="float")
np.ones
创建全 1 的数组:np.ones(shape=[2, 2])
从现有数组中生成:
np.asarray
:a = np.array([1, 2, 3])b = np.asarray(a)
np.copy
或 np.array(...)
:c = np.copy(a) # 深拷贝d = np.array(a.copy()) # 深拷贝
固定范围生成数组:使用 np.linspace
生成等距固定范围的数组:
np.linspace(0, 10, 100)
这将生成 [0, 10]
范围内的 100 个等分点。
生成数据时经常会需要一些统计函数来分析数据:
均匀分布随机数:
np.random.rand(d0, d1, ...) # [0, 1) 范围np.random.uniform(0.0, 1.0, size=(3, 4))# 生成指定大小的均匀分布随机数
高斯分布随机数:
np.random.normal(0, 1) # 标准正态分布np.random.normal(5, 2) # 均值为 5,标准差为 2
numpy 提供丰富的数组操作功能,包括索引切割、形状修改和类型转换等。
数组索引切片:
arr = np.arange(10)print(arr) # 输出 [0, 1, 2, ..., 9]print(arr[::2]) # 步长为 2 切成 [0, 2, 4, 6, 8]
形状修改:
np.T
切换行和列:arr = np.arange(4).reshape(2, 2)print(arr.T)# 输出:# [[0, 1],# [2, 3]]
np.reshape
:new_arr = np.reshape(arr, (1, -1))print(new_arr)
类型转换:使用 np.astype
方法转换数组元素类型:
float_arr = np.array([1, 2, 3], dtype=np.float64)int_arr = float_arr.astype('int32')
numpy 还提供了一些实用功能来操作数组:
np.unique
方法:unique_arr = np.unique([1, 2, 2, 3, 3, 3], return_indices=False)print(unique_arr)# 输出:[1, 2, 3]
数组之间的运算通常涉及到以下操作:
逻辑运算和布尔索引:
condition = np.where(condition_matrix, True_values, False_values)
统计指标计算:使用 np.max
, np.min
, np.mean
等函数来计算数据特征。例如:
data = np.array([4, 5, 6, 7, 8])print(np.mean(data)) # 6.0print(np.max(data)) # 8
当需要对两个数组进行操作时,numpy 会利用数组的广播机制来处理形状不一致的问题。具体来说,当两个数组在某个维度的某个位置上为 1 时,会自动扩展到相同的大小进行操作。
例如,按钮创建两个不同形状的数组并进行加法操作:
a = np.array([...], shape=(2, 3))b = np.array([...], shape=(3, 2))a + b# 会自动广播到 (2, 2) 维度上进行加法
如果需要执行矩阵乘法,可以使用以下两种方式:
通过 NumPy 的矩阵表示:
data_arry @ weights # 如果是 2D 矩阵np.matmul(data_arry, weights_arry)
通过 Python 的 @
操作符(推荐使用)。
合并数据可以使用以下函数:
水平拼接:使用 np.hstack
:
a = np.array([[1, 2], [3, 4]])b = np.array([[5, 6], [7, 8]])b = np.hsplit(b, [1, 2])result = np.hstack((a, b))
竖直拼接:使用 np.vstack
:
chunks = np.array([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]])stacked = np.vstack(chunks)
与文件操作相关的常用函数包括:
读取文本文件:使用 np.genfromtxt
:
data = np.genfromtxt('sample.csv', delimiter=',')
处理缺失值:常见的处理方法是删除包含缺失值的行,或者用统计方法进行插值填补。
通过以上基本功能和代码示例,可以逐步掌握 numpy 的核心工作流程。
转载地址:http://psnzk.baihongyu.com/