本文为初学者提供了快速入门NumPy的指南,介绍了NumPy的安装、基础操作和高级功能。通过实战案例,展示了NumPy在数据分析和机器学习中的应用。文章涵盖了NumPy在数组运算、统计描述和数学函数方面的强大功能,希望读者能够通过本文掌握NumPy实战技巧。
NumPy实战:初学者快速入门指南NumPy 是一个强大的 Python 库,专门用于科学计算和数据分析。它提供了一个强大的 n 维数组对象,以及对其进行操作的标准数学功能。本指南旨在帮助初学者快速入门 NumPy,了解其基本概念和高级操作。
NumPy简介与安装什么是NumPy
NumPy 是 "Numerical Python" 的缩写,它提供了 Python 语言对多维数组和矩阵操作的支持。NumPy 是许多其他高级科学计算库的基石,包括 SciPy、Pandas、Matplotlib 等。
NumPy的安装方法
在开始使用 NumPy 之前,你需要先安装它。NumPy 可以通过 Python 的包管理工具 pip
来安装。以下是安装和验证 NumPy 的步骤:
- 打开终端或命令行工具。
- 运行以下命令安装 NumPy:
pip install numpy
- 安装完成后,你可以通过导入 NumPy 来验证是否安装成功:
import numpy as np
print(np.__version__)
以上代码会输出 NumPy 的版本信息。确保你安装的版本是最新的,因为较新的版本通常会修复 bug 并增加新功能。如果输出没有问题,说明 NumPy 已安装成功。
NumPy基础操作NumPy 的核心是 ndarray
,即 n 维数组对象。本节将介绍如何创建 NumPy 数组以及如何获取数组的基本属性。
创建NumPy数组
可以通过多种方式创建 NumPy 数组,以下是几种常用的方法:
- 使用
np.array()
函数:
import numpy as np
# 从列表创建数组
a = np.array([1, 2, 3])
print(a)
# 输出:[1 2 3]
- 使用
np.arange()
函数,可以创建一个指定范围的数组:
b = np.arange(10)
print(b)
# 输出:[0 1 2 3 4 5 6 7 8 9]
- 使用
np.zeros()
和np.ones()
函数,可以创建全零和全一的数组:
c = np.zeros((3, 4)) # 创建一个3行4列的0矩阵
print(c)
# 输出:
# [[0. 0. 0. 0.]
# [0. 0. 0. 0.]
# [0. 0. 0. 0.]]
d = np.ones((2, 3)) # 创建一个2行3列的1矩阵
print(d)
# 输出:
# [[1. 1. 1.]
# [1. 1. 1.]]
数组的基本属性:形状与维度
NumPy 数组有许多属性来描述其形状和维度。以下是几个常用的属性:
ndim
:表示数组的维度数。shape
:表示数组的形状,即各个维度的大小。size
:表示数组中元素的总数。dtype
:表示数组元素的数据类型。
示例:
import numpy as np
e = np.array([[1, 2, 3], [4, 5, 6]])
print("数组e的维度:", e.ndim)
# 输出:数组e的维度: 2
print("数组e的形状:", e.shape)
# 输出:数组e的形状: (2, 3)
print("数组e的大小:", e.size)
# 输出:数组e的大小: 6
print("数组e的数据类型:", e.dtype)
# 输出:数组e的数据类型: int64
数组的基本操作:索引和切片
NumPy 数组支持索引和切片操作,类似于 Python 的列表。以下是一些示例:
- 索引:
import numpy as np
f = np.array([10, 20, 30, 40, 50])
print("索引第0个元素:", f[0])
# 输出:索引第0个元素: 10
print("索引第2个元素:", f[2])
# 输出:索引第2个元素: 30
- 切片:
import numpy as np
g = np.array([1, 2, 3, 4, 5])
print("切片第0到第2个元素:", g[0:3])
# 输出:切片第0到第2个元素: [1 2 3]
print("切片第1到第3个元素:", g[1:4])
# 输出:切片第1到第3个元素: [2 3 4]
数组运算
NumPy 支持各种数组运算,包括算术运算、逻辑运算和比较运算。这些运算可以是逐元素操作,也可以是矩阵操作。以下是一些常见运算的示例。
数组的算术运算
NumPy 支持各种算术运算,如加法、减法、乘法、除法等。以下是几个示例:
- 加法:
import numpy as np
h = np.array([1, 2, 3])
i = np.array([4, 5, 6])
print("加法:", h + i)
# 输出:加法: [5 7 9]
- 减法:
j = np.array([10, 20, 30])
k = np.array([5, 5, 5])
print("减法:", j - k)
# 输出:减法: [ 5 15 25]
- 乘法:
l = np.array([1, 2, 3])
m = np.array([4, 5, 6])
print("乘法:", l * m)
# 输出:乘法: [ 4 10 18]
- 除法:
n = np.array([10, 20, 30])
o = np.array([2, 4, 5])
print("除法:", n / o)
# 输出:除法: [5. 5. 6.]
数组的逻辑运算
NumPy 支持逻辑运算,如与、或、非等。以下是几个示例:
- 与运算:
import numpy as np
p = np.array([True, False, True])
q = np.array([True, True, False])
print("与运算:", np.logical_and(p, q))
# 输出:与运算: [ True False False]
- 或运算:
r = np.array([True, False, True])
s = np.array([False, True, False])
print("或运算:", np.logical_or(r, s))
# 输出:或运算: [ True True True]
- 非运算:
t = np.array([True, False, True])
print("非运算:", np.logical_not(t))
# 输出:非运算: [False True False]
数组的比较运算
NumPy 支持各种比较运算,如等于、不等于、大于、小于等。以下是几个示例:
- 等于运算:
import numpy as np
u = np.array([1, 2, 3])
v = np.array([1, 2, 4])
print("等于运算:", u == v)
# 输出:等于运算: [ True True False]
- 不等于运算:
w = np.array([5, 6, 7])
x = np.array([8, 6, 7])
print("不等于运算:", w != x)
# 输出:不等于运算: [ True False False]
- 大于运算:
y = np.array([10, 20, 30])
z = np.array([5, 15, 25])
print("大于运算:", y > z)
# 输出:大于运算: [ True True False]
- 小于运算:
aa = np.array([10, 20, 30])
bb = np.array([15, 25, 35])
print("小于运算:", aa < bb)
# 输出:小于运算: [ True True False]
数组高级操作
NumPy 提供了丰富的高级操作,如数组的广播、拼接与分割、排序与搜索等。以下是一些常见的高级操作示例。
数组的广播
广播是指 NumPy 数组之间的算术运算操作,即使数组的形状不同也能进行。NumPy 会自动扩展较小数组的形状,使其与较大数组匹配。以下是一些示例:
- 广播基本示例:
import numpy as np
cc = np.array([1, 2, 3])
dd = np.array([4, 5, 6])
ee = cc + dd
print("广播运算:", ee)
# 输出:广播运算: [5 7 9]
- 广播二维数组与一维数组:
ff = np.array([[1, 2, 3], [4, 5, 6]])
gg = np.array([10, 20, 30])
hh = ff + gg
print("广播二维数组与一维数组:", hh)
# 输出:广播二维数组与一维数组: [[11 22 33]
# [14 25 36]]
数组的拼接与分割
NumPy 提供了多种方法来拼接和分割数组。以下是一些示例:
- 拼接:
import numpy as np
ii = np.array([1, 2, 3])
jj = np.array([4, 5, 6])
kk = np.concatenate((ii, jj))
print("拼接:", kk)
# 输出:拼接: [1 2 3 4 5 6]
- 分割:
import numpy as np
ll = np.array([1, 2, 3, 4, 5, 6])
mm = np.array_split(ll, 3)
print("分割:", mm)
# 输出:分割: [array([1, 2]), array([3, 4]), array([5, 6])]
数组的排序与搜索
NumPy 提供了多种排序和搜索数组的函数。以下是一些示例:
- 排序:
import numpy as np
nn = np.array([3, 1, 4, 1, 5, 9, 2, 6, 5])
sorted_nn = np.sort(nn)
print("排序:", sorted_nn)
# 输出:排序: [1 1 2 3 4 5 5 6 9]
- 搜索:
import numpy as np
oo = np.array([1, 2, 3, 4, 5, 6])
pp = np.where(oo > 3)
print("搜索:", pp)
# 输出:搜索: (array([3, 4, 5]),)
数组的统计运算
NumPy 提供了丰富的统计函数来计算数组的统计描述。以下是一些常见的统计函数和示例。
数组的统计描述
你可以使用 np.mean()
、np.median()
、np.std()
等函数来计算数组的统计描述。以下是一些示例:
- 计算平均值:
import numpy as np
qq = np.array([1, 2, 3, 4, 5])
rr = np.mean(qq)
print("平均值:", rr)
# 输出:平均值: 3.0
- 计算中位数:
import numpy as np
ss = np.array([1, 2, 3, 4, 5, 6])
tt = np.median(ss)
print("中位数:", tt)
# 输出:中位数: 3.5
- 计算标准差:
import numpy as np
uu = np.array([1, 2, 3, 4, 5])
vv = np.std(uu)
print("标准差:", vv)
# 输出:标准差: 1.4142135623730951
常用的统计函数
NumPy 提供了许多常用的统计函数,如下所示:
np.sum()
:计算数组元素的总和:
import numpy as np
ww = np.array([1, 2, 3, 4, 5])
xx = np.sum(ww)
print("总和:", xx)
# 输出:总和: 15
np.prod()
:计算数组元素的乘积:
import numpy as np
yy = np.array([1, 2, 3, 4, 5])
zz = np.prod(yy)
print("乘积:", zz)
# 输出:乘积: 120
np.min()
、np.max()
:计算数组元素的最小值和最大值:
import numpy as np
aaa = np.array([1, 2, 3, 4, 5])
bbb = np.min(aaa)
ccc = np.max(aaa)
print("最小值:", bbb)
# 输出:最小值: 1
print("最大值:", ccc)
# 输出:最大值: 5
数组的数学函数
NumPy 还提供了一系列数学函数来计算数组的数学变换。以下是一些常见的数学函数示例:
np.sin()
、np.cos()
、np.tan()
:计算三角函数:
import numpy as np
ddd = np.array([0, np.pi/4, np.pi/2])
eee = np.sin(ddd)
fff = np.cos(ddd)
ggg = np.tan(ddd)
print("正弦:", eee)
# 输出:正弦: [0.0000000e+00 7.0710678e-01 1.0000000e+00]
print("余弦:", fff)
# 输出:余弦: [1.0000000e+00 7.0710678e-01 6.1232340e-17]
print("正切:", ggg)
# 输出:正切: [0.0000000e+00 1.0000000e+00 1.6331239e+16]
np.log()
、np.log10()
:计算自然对数和常用对数:
import numpy as np
hhh = np.array([1, 10, 100])
iii = np.log(hhh)
jjj = np.log10(hhh)
print("自然对数:", iii)
# 输出:自然对数: [0. 1. 4.60517019]
print("常用对数:", jjj)
# 输出:常用对数: [0. 1. 2.]
np.sqrt()
:计算平方根:
import numpy as np
kkk = np.array([1, 4, 9, 16])
lll = np.sqrt(kkk)
print("平方根:", lll)
# 输出:平方根: [1. 2. 3. 4.]
实战案例
简单的数据分析案例
假设我们有一组学生成绩数据,我们希望计算平均分、最高分和最低分。以下是如何使用 NumPy 进行数据分析的示例:
import numpy as np
# 学生成绩数据
scores = np.array([89, 92, 95, 84, 90, 88, 87, 91, 93, 86])
# 计算平均分、最高分和最低分
mean_score = np.mean(scores)
max_score = np.max(scores)
min_score = np.min(scores)
print("平均分:", mean_score)
print("最高分:", max_score)
print("最低分:", min_score)
数据可视化基础
NumPy 能够很好地与其他可视化库如 Matplotlib 配合使用。以下是如何使用 NumPy 和 Matplotlib 进行简单的数据可视化:
import numpy as np
import matplotlib.pyplot as plt
# 生成一组随机数据
data = np.random.rand(50)
# 绘制数据的直方图
plt.hist(data, bins=10, alpha=0.7, color='blue')
plt.title("直方图")
plt.xlabel("值")
plt.ylabel("频率")
plt.show()
数组在机器学习中的应用
NumPy 在机器学习中扮演着重要角色,特别是在处理大量数据时。以下是如何使用 NumPy 进行简单的机器学习预处理:
import numpy as np
# 生成一批随机数据
X = np.random.rand(100, 2)
y = np.random.randint(2, size=100)
# 数据标准化
mean = np.mean(X, axis=0)
std = np.std(X, axis=0)
X_normalized = (X - mean) / std
# 打印标准化后的数据
print("标准化后的数据:")
print(X_normalized)
以上示例展示了 NumPy 在数据处理和机器学习预处理中的应用。通过 NumPy,你可以高效地处理大规模数据集,进行各种统计和数学运算,从而为高级数据分析和机器学习算法提供坚实的基础。
总结通过本指南,你已经掌握了 NumPy 的基本概念和高级操作。NumPy 提供了强大的科学计算功能,使 Python 成为了数据科学家和机器学习工程师的首选语言。如果你希望进一步学习 Python 数据科学库,建议访问 慕课网,那里提供了丰富的教程和实战项目。
共同学习,写下你的评论
评论加载中...
作者其他优质文章