一、numpy
numpy的基本使用方法
NumPy是Python中用于科学计算的基础包。它提供了一个高效的多维数组对象以及用于数组操作的函数。以下是NumPy的一些基本使用方法和示例代码。
1. 安装NumPy
如果你还没有安装NumPy,可以使用pip安装:
pip install numpy
2. 导入NumPy
导入NumPy库,通常使用缩写np
import numpy as np
3. 创建数组
3.1. 从列表创建数组
array_from_list = np.array([1, 2, 3, 4, 5])
3.2. 创建全零数组和全一数组
zeros_array = np.zeros((3, 3)) # 3x3的全零数组
ones_array = np.ones((2, 4)) # 2x4的全一数组
3.3. 创建指定范围的数组
range_array = np.arange(0, 10, 2) # 从0到10(不包括10),步长为2
3.4. 创建线性空间数组
linspace_array = np.linspace(0, 1, 5) # 从0到1,均匀分成5个数
4. 数组操作
4.1. 数组的形状
array = np.array([[1, 2, 3], [4, 5, 6]])
print(array.shape) # 输出: (2, 3)
4.2. 改变数组形状
reshaped_array = array.reshape((3, 2)) # 重新塑造为3x2的数组
4.3. 数组的元素访问
print(array[0, 1]) # 访问第一行第二列的元素,输出: 2
4.4. 数组的切片
slice_array = array[:, 1] # 选取所有行的第二列
5. 数组运算
5.1. 元素级运算
array1 = np.array([1, 2, 3])
array2 = np.array([4, 5, 6])
sum_array = array1 + array2
print(sum_array) # 输出: [5 7 9]
5.2. 矩阵乘法
matrix1 = np.array([[1, 2], [3, 4]])
matrix2 = np.array([[5, 6], [7, 8]])
product_matrix = np.dot(matrix1, matrix2)
5.3. 广播机制
array = np.array([[1, 2, 3], [4, 5, 6]])
add_array = array + 1 # 每个元素加1
6. 常用函数
6.1. 数组求和和平均值
sum_value = np.sum(array)
print(sum_value) # 输出: 21
mean_value = np.mean(array)
print(mean_value) # 输出: 3.5
6.2. 最大值和最小值
max_value = np.max(array)
print(max_value) # 输出: 6
min_value = np.min(array)
print(min_value) # 输出: 1
6.3. 排序
sorted_array = np.sort(array, axis=0) # 对每列进行排序
7. NumPy中的随机模块
random_array = np.random.rand(3, 3) # 生成3x3的随机数组
random_int_array = np.random.randint(0, 10, size=(3, 3)) # 生成0到10之间的随机整数数组
8. 处理缺失值
array_with_nan = np.array([1, 2, np.nan, 4])
nan_sum = np.nansum(array_with_nan) # 忽略NaN求和
print(nan_sum) # 输出: 7.0
numpy在数据处理中的使用
NumPy在数据处理中的应用非常广泛,因其高效的多维数组对象和丰富的函数库,被广泛用于数据分析、科学计算和机器学习等领域。
1. 数据加载与存储
NumPy可以方便地从文件中加载和存储数据。
1.1. 从文本文件加载数据
import numpy as np
# 假设有一个数据文件data.txt,其中包含数字数据
data = np.loadtxt('data.txt', delimiter=',')
print(data)
1.2. 存储数据到文本文件
# 将数据保存到文件output.txt
np.savetxt('output.txt', data, delimiter=',')
2. 数据清洗
数据清洗是数据处理中重要的一环,包括处理缺失值、去除重复值、过滤噪声等。
2.1. 处理缺失值
data_with_nan = np.array([[1, 2, np.nan], [4, np.nan, 6], [7, 8, 9]])
# 计算忽略NaN的列平均值
col_mean = np.nanmean(data_with_nan, axis=0)
print(col_mean)
# 用列平均值填补NaN
inds = np.where(np.isnan(data_with_nan))
data_with_nan[inds] = np.take(col_mean, inds[1])
2.2. 去除重复值
data = np.array([[1, 2], [3, 4], [1, 2], [5, 6]])
unique_data = np.unique(data, axis=0)
3. 数据变换
数据变换包括标准化、归一化、排序、重塑等。
3.1. 数据标准化
data = np.array([[1, 2], [3, 4], [5, 6]])
mean = np.mean(data, axis=0)
std = np.std(data, axis=0)
standardized_data = (data - mean) / std
3.2. 数据归一化
min_val = np.min(data, axis=0)
max_val = np.max(data, axis=0)
normalized_data = (data - min_val) / (max_val - min_val)
3.3. 数据排序
sorted_data = np.sort(data, axis=0)
4. 数据聚合
数据聚合用于计算汇总统计量,如总和、平均值、最大值等。
4.1. 计算总和、平均值、最大值和最小值
data = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
total_sum = np.sum(data)
mean_value = np.mean(data)
max_value = np.max(data)
min_value = np.min(data)
print(f"Sum: {total_sum}, Mean: {mean_value}, Max: {max_value}, Min: {min_value}")
4.2. 按轴进行聚合计算
col_sum = np.sum(data, axis=0) # 按列求和
row_mean = np.mean(data, axis=1) # 按行求平均
print(f"Column Sum: {col_sum}, Row Mean: {row_mean}")
5. 数据合并与分割
NumPy提供了多种方式来合并和分割数组。
5.1. 数组合并
data1 = np.array([[1, 2], [3, 4]])
data2 = np.array([[5, 6], [7, 8]])
# 垂直合并
vstacked_data = np.vstack((data1, data2))
print(vstacked_data)
# 水平合并
hstacked_data = np.hstack((data1, data2))
print(hstacked_data)
5.2. 数组分割
data = np.array([[1, 2, 3, 4], [5, 6, 7, 8]])
# 水平分割
split_data = np.hsplit(data, 2)
print(split_data)
# 垂直分割
split_data = np.vsplit(data, 2)
print(split_data)
6. 高级数组操作
NumPy支持复杂的数组操作,如广播、矢量化计算等。
6.1. 广播
array = np.array([[1, 2, 3], [4, 5, 6]])
broadcast_array = array + np.array([1, 0, -1])
print(broadcast_array)
6.2. 矢量化计算
data = np.array([1, 2, 3, 4, 5])
# 普通循环计算平方
squared = []
for x in data:
squared.append(x**2)
print(squared)
# 矢量化计算平方
vectorized_squared = np.square(data)
print(vectorized_squared)
以上只是NumPy在数据处理中的一些常见应用。NumPy功能强大,适用于各种数据处理任务。通过结合使用NumPy与其他数据处理工具(如Pandas),可以实现更加复杂和高效的数据处理工作,近期会补充一篇pandas的使用说明。