Python中的Numpy模块基础使用

NumPy 模块

NumPy 是 Python 中用于数值计算的核心库,截至 2025 年 6 月,最新版本为 1.26.2。它提供了丰富的方法和属性,方便处理多维数组和矩阵运算。将通过表格梳理方法及其说明,并以独立代码块呈现示例,便于学习掌握。

一、数组创建方法

方法 说明
np.array() 将列表、元组等可迭代对象转换为 ndarray 数组,可自动推断数据类型 *****
np.zeros() 创建指定形状,元素全为 0 的数组,数据类型默认为float64 *****
np.ones() 生成指定形状,元素全为 1 的数组,可通过dtype参数指定数据类型 *****
np.empty() 创建指定形状的未初始化数组,元素值为内存中的随机值,使用前需赋值
np.arange() 按指定的起始值、终止值和步长创建等差数列数组,类似 Python 的range()函数,但返回 NumPy 数组 *****
np.linspace() 在指定区间内均匀生成指定数量的元素 *****
import numpy as np
# np.array()示例
arr = np.array([1, 2, 3])
arr_2d = np.array([[1, 2], [3, 4]])
print("一维数组:", arr)
print("二维数组:", arr_2d)

# np.zeros()示例
zeros_arr = np.zeros((3, 4))
print("全零数组:", zeros_arr)

# np.ones()示例
ones_arr = np.ones((2, 2), dtype=int)
print("全一数组:", ones_arr)

# np.empty()示例
empty_arr = np.empty((3,))
print("未初始化数组:", empty_arr)

# np.arange()示例
range_arr = np.arange(1, 10, 2)
print("等差数列数组:", range_arr)

# np.linspace()示例
linspace_arr = np.linspace(0, 1, 5)
print("等间距数组:", linspace_arr)

二、数组属性

属性 说明
shape 获取数组的形状,返回一个表示维度大小的元组
dtype 获取数组的数据类型,如float64、int32等
ndim 获取数组的维度,1D 数组返回 1,2D 数组返回 2,依此类推
size 获取数组元素的总数
itemsize 获取数组中每个元素占用的字节数
import numpy as np
# shape示例
arr = np.array([[1, 2, 3], [4, 5, 6]])
print("数组形状:", arr.shape)

# dtype示例
arr = np.array([1, 2, 3], dtype=float)
print("数组数据类型:", arr.dtype)

# ndim示例
arr_1d = np.array([1, 2, 3])
arr_2d = np.array([[1, 2], [3, 4]])
print("一维数组维度:", arr_1d.ndim)
print("二维数组维度:", arr_2d.ndim)

# size示例
arr = np.array([[1, 2], [3, 4]])
print("数组元素总数:", arr.size)

# itemsize示例
arr = np.array([1, 2, 3], dtype=np.int32)
print("每个元素占用字节数:", arr.itemsize)

三、数组运算方法

方法 说明
np.add() 对两个数组对应元素相加,返回新数组
np.subtract() 对两个数组对应元素相减,返回新数组
np.multiply() 对两个数组对应元素相乘,返回新数组
np.divide() 对两个数组对应元素相除,返回新数组
np.sum() 计算数组元素的总和,可通过axis参数指定维度计算列和或行和
np.mean() 计算数组元素的平均值,支持按指定维度计算
np.std() 计算数组元素的标准差,衡量数据的离散程度
import numpy as np
# np.add()示例
arr1 = np.array([1, 2, 3])
arr2 = np.array([4, 5, 6])
result = np.add(arr1, arr2)
print("相加结果:", result)

# np.subtract()示例
arr1 = np.array([5, 7, 9])
arr2 = np.array([2, 4, 6])
result = np.subtract(arr1, arr2)
print("相减结果:", result)

# np.multiply()示例
arr1 = np.array([2, 3, 4])
arr2 = np.array([5, 6, 7])
result = np.multiply(arr1, arr2)
print("相乘结果:", result)

# np.divide()示例
arr1 = np.array([10, 20, 30])
arr2 = np.array([2, 4, 5])
result = np.divide(arr1, arr2)
print("相除结果:", result)

# np.sum()示例
arr = np.array([1, 2, 3, 4])
total = np.sum(arr)
print("数组元素总和:", total)
arr_2d = np.array([[1, 2], [3, 4]])
col_sum = np.sum(arr_2d, axis=0)
print("二维数组列和:", col_sum)

# np.mean()示例
arr = np.array([1, 2, 3, 4])
average = np.mean(arr)
print("数组元素平均值:", average)
arr_2d = np.array([[1, 2], [3, 4]])
col_mean = np.mean(arr_2d, axis=0)
print("二维数组列平均值:", col_mean)

# np.std()示例
arr = np.array([1, 2, 3, 4])
std_dev = np.std(arr)
print("数组元素标准差:", std_dev)

四、数组索引与切片方法

方法 说明
getitem() 支持一维数组索引单个元素、切片获取子数组;二维数组通过行、列索引或切片获取子矩阵
np.where() 根据给定条件,返回满足条件的元素索引
np.extract() 根据给定条件,提取数组中满足条件的元素
import numpy as np
# __getitem__()示例
arr = np.array([1, 2, 3, 4, 5])
element = arr[2]
sub_arr = arr[1:4]
arr_2d = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
sub_matrix = arr_2d[1:, 1:]
print("一维数组索引元素:", element)
print("一维数组切片结果:", sub_arr)
print("二维数组切片结果:", sub_matrix)

# np.where()示例
arr = np.array([1, 2, 3, 4, 5])
indices = np.where(arr > 3)
print("满足条件的索引:", indices)

# np.extract()示例
arr = np.array([1, 2, 3, 4, 5])
condition = np.mod(arr, 2) == 0
result = np.extract(condition, arr)
print("根据条件提取的元素:", result)

五、数组变形方法

方法 说明
reshape() 在不改变数据内容的情况下,改变数组的形状,元素总数需保持一致 *
ravel() 将多维数组展平为一维数组
transpose() 交换数组的行和列,实现数组转置
squeeze() 移除数组中维度为 1 的维度
import numpy as np
# reshape()示例
arr = np.array([1, 2, 3, 4, 5, 6])
new_arr = arr.reshape(2, 3)
print("变形后的数组:", new_arr)

# ravel()示例
arr_2d = np.array([[1, 2], [3, 4]])
flat_arr = arr_2d.ravel()
print("展平后的数组:", flat_arr)

# transpose()示例
arr = np.array([[1, 2], [3, 4]])
transposed_arr = arr.transpose()
print("转置后的数组:", transposed_arr)

# squeeze()示例
arr = np.array([[[1], [2], [3]]])
squeezed_arr = np.squeeze(arr)
print("移除单维度后的数组:", squeezed_arr)

补充:

np.dot():计算两个数组的点积,在矩阵运算中广泛应用,是实现神经网络前向传播、反向传播中矩阵乘法的核心方法:

# 模拟神经网络中一层的计算
input_data = np.array([[1, 2, 3]])
weights = np.array([[0.1, 0.2], [0.3, 0.4], [0.5, 0.6]])
output = np.dot(input_data, weights)

np.concatenate():沿指定轴连接多个数组,在数据合并、扩充数据集等场景中常用。比如,将训练集和验证集合并为新的数据集:

train_features = np.array([[1, 2], [3, 4]])
val_features = np.array([[5, 6], [7, 8]])
combined_features = np.concatenate((train_features, val_features), axis=0)
posted @ 2025-06-19 20:10  苦瓜大王-001  阅读(136)  评论(0)    收藏  举报