为了账号安全,请及时绑定邮箱和手机立即绑定

NumPy实战:初学者快速入门指南

本文为初学者提供了快速入门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 的步骤:

  1. 打开终端或命令行工具。
  2. 运行以下命令安装 NumPy:
pip install numpy
  1. 安装完成后,你可以通过导入 NumPy 来验证是否安装成功:
import numpy as np
print(np.__version__)

以上代码会输出 NumPy 的版本信息。确保你安装的版本是最新的,因为较新的版本通常会修复 bug 并增加新功能。如果输出没有问题,说明 NumPy 已安装成功。

NumPy基础操作

NumPy 的核心是 ndarray,即 n 维数组对象。本节将介绍如何创建 NumPy 数组以及如何获取数组的基本属性。

创建NumPy数组

可以通过多种方式创建 NumPy 数组,以下是几种常用的方法:

  1. 使用 np.array() 函数:
import numpy as np

# 从列表创建数组
a = np.array([1, 2, 3])
print(a)
# 输出:[1 2 3]
  1. 使用 np.arange() 函数,可以创建一个指定范围的数组:
b = np.arange(10)
print(b)
# 输出:[0 1 2 3 4 5 6 7 8 9]
  1. 使用 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 数组有许多属性来描述其形状和维度。以下是几个常用的属性:

  1. ndim:表示数组的维度数。
  2. shape:表示数组的形状,即各个维度的大小。
  3. size:表示数组中元素的总数。
  4. 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 的列表。以下是一些示例:

  1. 索引:
import numpy as np

f = np.array([10, 20, 30, 40, 50])
print("索引第0个元素:", f[0])
# 输出:索引第0个元素: 10
print("索引第2个元素:", f[2])
# 输出:索引第2个元素: 30
  1. 切片:
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 支持各种算术运算,如加法、减法、乘法、除法等。以下是几个示例:

  1. 加法:
import numpy as np

h = np.array([1, 2, 3])
i = np.array([4, 5, 6])
print("加法:", h + i)
# 输出:加法: [5 7 9]
  1. 减法:
j = np.array([10, 20, 30])
k = np.array([5, 5, 5])
print("减法:", j - k)
# 输出:减法: [ 5 15 25]
  1. 乘法:
l = np.array([1, 2, 3])
m = np.array([4, 5, 6])
print("乘法:", l * m)
# 输出:乘法: [ 4 10 18]
  1. 除法:
n = np.array([10, 20, 30])
o = np.array([2, 4, 5])
print("除法:", n / o)
# 输出:除法: [5. 5. 6.]

数组的逻辑运算

NumPy 支持逻辑运算,如与、或、非等。以下是几个示例:

  1. 与运算:
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]
  1. 或运算:
r = np.array([True, False, True])
s = np.array([False, True, False])
print("或运算:", np.logical_or(r, s))
# 输出:或运算: [ True  True  True]
  1. 非运算:
t = np.array([True, False, True])
print("非运算:", np.logical_not(t))
# 输出:非运算: [False  True False]

数组的比较运算

NumPy 支持各种比较运算,如等于、不等于、大于、小于等。以下是几个示例:

  1. 等于运算:
import numpy as np

u = np.array([1, 2, 3])
v = np.array([1, 2, 4])
print("等于运算:", u == v)
# 输出:等于运算: [ True  True False]
  1. 不等于运算:
w = np.array([5, 6, 7])
x = np.array([8, 6, 7])
print("不等于运算:", w != x)
# 输出:不等于运算: [ True False False]
  1. 大于运算:
y = np.array([10, 20, 30])
z = np.array([5, 15, 25])
print("大于运算:", y > z)
# 输出:大于运算: [ True  True False]
  1. 小于运算:
aa = np.array([10, 20, 30])
bb = np.array([15, 25, 35])
print("小于运算:", aa < bb)
# 输出:小于运算: [ True True False]
数组高级操作

NumPy 提供了丰富的高级操作,如数组的广播、拼接与分割、排序与搜索等。以下是一些常见的高级操作示例。

数组的广播

广播是指 NumPy 数组之间的算术运算操作,即使数组的形状不同也能进行。NumPy 会自动扩展较小数组的形状,使其与较大数组匹配。以下是一些示例:

  1. 广播基本示例:
import numpy as np

cc = np.array([1, 2, 3])
dd = np.array([4, 5, 6])
ee = cc + dd
print("广播运算:", ee)
# 输出:广播运算: [5 7 9]
  1. 广播二维数组与一维数组:
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 提供了多种方法来拼接和分割数组。以下是一些示例:

  1. 拼接:
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]
  1. 分割:
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 提供了多种排序和搜索数组的函数。以下是一些示例:

  1. 排序:
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]
  1. 搜索:
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() 等函数来计算数组的统计描述。以下是一些示例:

  1. 计算平均值:
import numpy as np

qq = np.array([1, 2, 3, 4, 5])
rr = np.mean(qq)
print("平均值:", rr)
# 输出:平均值: 3.0
  1. 计算中位数:
import numpy as np

ss = np.array([1, 2, 3, 4, 5, 6])
tt = np.median(ss)
print("中位数:", tt)
# 输出:中位数: 3.5
  1. 计算标准差:
import numpy as np

uu = np.array([1, 2, 3, 4, 5])
vv = np.std(uu)
print("标准差:", vv)
# 输出:标准差: 1.4142135623730951

常用的统计函数

NumPy 提供了许多常用的统计函数,如下所示:

  1. np.sum():计算数组元素的总和:
import numpy as np

ww = np.array([1, 2, 3, 4, 5])
xx = np.sum(ww)
print("总和:", xx)
# 输出:总和: 15
  1. np.prod():计算数组元素的乘积:
import numpy as np

yy = np.array([1, 2, 3, 4, 5])
zz = np.prod(yy)
print("乘积:", zz)
# 输出:乘积: 120
  1. 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 还提供了一系列数学函数来计算数组的数学变换。以下是一些常见的数学函数示例:

  1. 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]
  1. 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.]
  1. 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 数据科学库,建议访问 慕课网,那里提供了丰富的教程和实战项目。

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消