Python numpy模块的主要功能、基础操作和关键代码有哪些?附完整数据处理示例以及Python 数据分析学习友好入门教程

#『AI先锋杯·14天征文挑战第6期』#

NumPy是Python科学计算的核心库,专为高效处理多维数组和复杂数学运算而设计。下面详细介绍其核心功能、基础操作和关键代码示例。

1. NumPy的核心功能概述

NumPy的核心是ndarray​(N维数组)对象,它支持高效的多维数据存储和操作。相比Python原生列表,NumPy数组在内存中连续存储,元素类型相同,这使得它们能够进行快速的向量化运算。

核心特性包括:

  • 高效的多维数组对象​:支持高维数据表示和操作

  • 广播功能​:允许不同形状数组之间的数学运算

  • 线性代数运算​:矩阵乘法、求逆、特征值等

  • 随机数生成​:各种概率分布的随机数

  • 傅里叶变换​:信号处理功能

  • 集成C/C++/Fortran代码的能力

2. 数组创建与基本操作

2.1 创建数组的多种方法

import numpy as np

# 从列表创建数组
arr1 = np.array([1, 2, 3, 4, 5])  # 一维数组
arr2d = np.array([[1, 2, 3], [4, 5, 6]])  # 二维数组

# 创建特殊数组
zeros_arr = np.zeros((3, 3))  # 3x3全0数组
ones_arr = np.ones((2, 4))  # 2x4全1数组
full_arr = np.full((2, 2), 3.14)  # 2x2全为3.14的数组
eye_arr = np.eye(3)  # 3x3单位矩阵

# 创建序列数组
range_arr = np.arange(0, 10, 2)  # [0, 2, 4, 6, 8]
linear_arr = np.linspace(0, 1, 5)  # [0., 0.25, 0.5, 0.75, 1.]

# 随机数组
random_arr = np.random.rand(3, 3)  # 均匀分布
normal_arr = np.random.normal(0, 1, (3, 3))  # 正态分布
randint_arr = np.random.randint(0, 10, (2, 3))  # 随机整数

2.2 数组属性查看

arr = np.array([[1, 2, 3], [4, 5, 6]])

print("数组形状:", arr.shape)  # (2, 3)
print("数组维度:", arr.ndim)   # 2
print("元素总数:", arr.size)   # 6
print("数据类型:", arr.dtype)  # int64
print("每个元素字节大小:", arr.itemsize)  # 8

3. 数组索引与切片

3.1 基本索引和切片

arr = np.array([[1, 2, 3, 4],
                [5, 6, 7, 8],
                [9, 10, 11, 12]])

# 索引
print(arr[0, 1])    # 2 (第0行第1列)
print(arr[1][2])    # 7 (第1行第2列)

# 切片
print(arr[0:2, 1:3])  # [[2, 3], [6, 7]] (前两行,第2-3列)
print(arr[:, 0])     # [1, 5, 9] (所有行的第0列)
print(arr[1, :])     # [5, 6, 7, 8] (第1行的所有列)

# 布尔索引
bool_idx = arr > 5
print(bool_idx)  # 布尔数组
print(arr[arr > 5])  # [6, 7, 8, 9, 10, 11, 12]

3.2 数组变形与组合

arr = np.arange(12)

# 改变形状
reshaped = arr.reshape(3, 4)  # 3x4数组
flattened = arr.flatten()     # 展平为一维数组

# 转置
transposed = reshaped.T

# 数组合并
arr1 = np.array([[1, 2], [3, 4]])
arr2 = np.array([[5, 6], [7, 8]])

v_stack = np.vstack((arr1, arr2))  # 垂直堆叠
h_stack = np.hstack((arr1, arr2))  # 水平堆叠
concatenated = np.concatenate((arr1, arr2), axis=0)  # 沿指定轴合并

4. 数组运算与数学函数

4.1 基本运算与广播机制

a = np.array([[1, 2], [3, 4]])
b = np.array([[5, 6], [7, 8]])
c = np.array([10, 20])

# 逐元素运算
print("加法:\n", a + b)
print("乘法:\n", a * b)

# 广播机制:小数组自动扩展以适应大数组的运算
print("广播加法:\n", a + c)  # c被广播为[[10,20],[10,20]]

# 标量运算
print("标量乘法:\n", a * 3)

4.2 数学与统计函数

arr = np.array([[1, 2, 3], [4, 5, 6]])

# 基本数学函数
print("平方根:", np.sqrt(arr))
print("指数:", np.exp(arr))
print("自然对数:", np.log(arr))

# 统计函数
print("总和:", np.sum(arr))
print("平均值:", np.mean(arr))
print("标准差:", np.std(arr))
print("最大值:", np.max(arr))
print("最小值:", np.min(arr))

# 沿轴计算
print("每列总和:", np.sum(arr, axis=0))  # [5, 7, 9]
print("每行平均值:", np.mean(arr, axis=1))  # [2, 5]

4.3 线性代数运算

a = np.array([[1, 2], [3, 4]])
b = np.array([[5, 6], [7, 8]])

# 矩阵乘法
dot_product = np.dot(a, b)
# 或使用 @ 运算符
matrix_product = a @ b

# 线性代数运算
identity = np.eye(2)  # 单位矩阵
determinant = np.linalg.det(a)  # 行列式
inverse = np.linalg.inv(a)  # 逆矩阵
eigenvalues = np.linalg.eig(a)  # 特征值和特征向量

5. 实际数据处理示例

5.1 股市数据分析

import numpy as np

# 创建示例股市数据 [股票代码, 开盘价, 收盘价, 最高价, 最低价, 成交量]
stock_data = np.array([
    [110.0, 115.0, 112.0, 108.0, 2000],  # AAPL
    [100.0, 105.0, 102.0, 100.0, 1500],  # GOOG
    [90.0, 95.0, 88.0, 92.0, 2500]       # AMZN
])

# 提取价格数据(排除成交量)
prices = stock_data[:, :4]

# 计算关键指标
average_prices = np.mean(prices, axis=1)  # 每只股票的平均价格
price_changes = prices[:, 1] - prices[:, 0]  # 涨跌幅
max_prices = np.max(prices[:, 2])  # 所有股票中的最高价

# 使用布尔索引筛选上涨的股票
rising_stocks = price_changes > 0

print("平均价格:", average_prices)
print("价格变化:", price_changes)
print("上涨股票:", rising_stocks)
print("最高价格:", max_prices)

5.2 图像数据处理示例

# 模拟图像数据(高度×宽度×RGB通道)
image_data = np.random.randint(0, 256, (100, 100, 3), dtype=np.uint8)

print("图像形状:", image_data.shape)
print("数据类型:", image_data.dtype)

# 图像处理操作
# 裁剪
cropped_image = image_data[20:80, 30:90, :]

# 灰度转换(RGB加权平均)
gray_image = np.dot(image_data[..., :3], [0.2989, 0.5870, 0.1140])

# 图像反转
inverted_image = 255 - image_data

# 亮度调整
brightened_image = np.clip(image_data * 1.2, 0, 255).astype(np.uint8)

5.3 综合数据清洗与分析

# 创建包含一些异常值的数据集
data = np.array([23, 45, 67, 12, 89, 45, 23, 67, -999, 34, 78, 999, 23])

# 数据清洗:替换异常值
cleaned_data = np.where(data < 0, np.nan, data)  # 将负数替换为NaN
cleaned_data = np.where(cleaned_data > 100, np.nan, cleaned_data)  # 将大于100的值替换为NaN

# 使用nan-safe函数进行计算
mean_val = np.nanmean(cleaned_data)
std_val = np.nanstd(cleaned_data)

# 数据标准化
normalized_data = (cleaned_data - mean_val) / std_val

print("原始数据:", data)
print("清洗后数据:", cleaned_data)
print("平均值:", mean_val)
print("标准化数据:", normalized_data)

6. 性能优化技巧

  1. 向量化操作​:避免使用Python循环,尽量使用NumPy内置函数

  2. 内存布局优化​:使用np.ascontiguousarray()确保数据连续存储

  3. 预分配内存​:提前创建数组避免频繁扩容

  4. 选择合适的数据类型​:使用dtype参数减少内存占用

NumPy的这些功能使其成为Python数据科学生态系统的基石,为Pandas、SciPy和scikit-learn等高级库提供了基础支持。掌握NumPy的核心概念和操作对于进行高效的数据处理和分析至关重要。

7.Python数据分析学习教程

  针对 Python 数据分析或机器学习推荐两本入门级的图书:《Python 机器学习原理与算法实现》(杨维忠 张甜 著 2023 年 2 月新书 清华大学出版社)《Python 数据科学应用从入门到精通》(张甜 杨维忠 著 2023 年 11 月新书 清华大学出版社)。这两本书的特色是在数据分析、机器学习各种算法的介绍方面通俗易懂,较少涉及数学推导,对数学基础要求相对不高,在 Python 代码方面讲的很细致,看了以后根据自身需要选取算法、优化代码、科学调参。都有配套免费提供的源代码、数据文件和视频讲解,也有 PPT、思维导图、习题等。

为什么说这两本书值得?首先说《Python 机器学习原理与算法实现》(杨维忠 张甜 著 2023 年 2 月新书 清华大学出版社),内容非常详实,包含了 Python 和机器学习,相当于一次获得了两本书。在讲解各类机器学习算法时,逐一详解用到的各种 Python 代码,针对每行代码均有恰当注释(这一点基本上是大多数书目做不到的)。很多银行员工通过这些学习一下子就学会了 Python,并且用于工作中开展数据分析、机器学习、数据可视化等,这本书也成为银行员工的一本网红书。

全书内容共 17 章。第 1、2 章介绍 Python 的入门知识和进阶知识;第 3 章介绍机器学习的概念及各种术语及评价标准;第 4~10 章介绍相对简单的监督式学习方法,包括线性回归算法、二元 Logistic 回归算法、多元 Logistic 回归算法、判别分析算法、朴素贝叶斯算法、高维数据惩罚回归算法、K 近邻算法;第 11、12 章介绍主成分分析算法、聚类分析算法两种非监督式学习算法;第 13~15 章介绍相对复杂的监督式学习算法,包括决策树算法和随机森林算法、提升法两种集成学习算法;第 16、17 章介绍支持向量机算法、神经网络算法两种高级监督式学习算法。

《Python 数据科学应用从入门到精通》一书,旨在教会读者实现全流程的数据分析,并且相对《Python 机器学习原理与算法实现》一书增加了很多概念性、科普性的内容,进一步降低了学习难度。

国务院发展研究中心创新发展研究部第二研究室主任杨超 ,山东大学经济学院金融系党支部书记、副主任、副教授、硕士生导师张博,山东管理学院信息工程学院院长 袁锋 教授、硕士生导师,山东大学经济学院刘一鸣副研究员、硕士生导师,得厚投资合伙人张伟民等一众大牛联袂推荐。书中全是干货,买这一本书相当于一下子得到了 5 本书(Python 基础、数据清洗、特征工程、数据可视化、数据挖掘与建模),而且入门超级简单,不需要编程基础,也不需要过多数学推导,非常适用于零基础学生。

全书内容共分 13 章。其中第 1 章为数据科学应用概述,第 2 章讲解 Python 的入门基础知识,第 3 章讲解数据清洗。第 4~6 章介绍特征工程,包括特征选择、特征处理、特征提取。第 7 章介绍数据可视化。第 8~13 章介绍 6 种数据挖掘与建模方法,分别为线性回归、Logistic 回归、决策树、随机森林、神经网络、RFM 分析。从数据科学应用和 Python 的入门,再到数据清洗与特征工程,最终完成数据挖掘与建模或数据可视化,从而可以为读者提供“从拿到数据开始,一直到构建形成最终模型或可视化报告成果”的一站式、全流程指导。

两本书随书赠送的学习资料也很多,包括全部的源代码、PPT、思维导图,还有 10 小时以上的讲解视频,每一章后面还有练习题及参考答案,还有学习群,相对于只看网络上的视频,一方面更加系统、高效,另一方面照着书一步步操作学起来也事半功倍。全网热销中,当当、京东等平台搜索“Python 机器学习 杨维忠”“Python 数据科学 杨维忠”即可。

创作不易,恳请多多点赞,感谢您的支持!也期待大家多多关注我,一起学习数据分析知识。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

数据科学作家

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值