Python数据科学手册:NumPy数组基础操作详解

Python数据科学手册:NumPy数组基础操作详解

data-science-ipython-notebooks donnemartin/data-science-ipython-notebooks: 是一系列基于 IPython Notebook 的数据科学教程,它涉及了 Python、 NumPy、 pandas、 SQL 等多种数据处理工具。适合用于学习数据科学和分析,特别是对于需要使用 Python 和 SQL 等工具进行数据分析和处理的场景。特点是数据科学教程、IPython Notebook、Python、SQL。 data-science-ipython-notebooks 项目地址: https://gitcode.com/gh_mirrors/da/data-science-ipython-notebooks

NumPy是Python数据科学生态系统的核心库,提供了高性能的多维数组对象和工具。本文将深入讲解NumPy数组的基础操作,帮助读者掌握数组处理的核心技能。

数组基本属性

NumPy数组(ndarray)具有多个重要属性,了解这些属性是操作数组的基础:

import numpy as np
np.random.seed(0)  # 设置随机种子保证结果可复现

# 创建不同维度的数组
x1 = np.random.randint(10, size=6)  # 一维数组
x2 = np.random.randint(10, size=(3, 4))  # 二维数组
x3 = np.random.randint(10, size=(3, 4, 5))  # 三维数组

# 查看数组属性
print("x3的维度数:", x3.ndim)
print("x3的形状:", x3.shape)
print("x3的元素总数:", x3.size)

输出结果:

x3的维度数: 3
x3的形状: (3, 4, 5)
x3的元素总数: 60

其他重要属性包括:

  • dtype: 数组元素的数据类型
  • itemsize: 每个元素占用的字节数
  • nbytes: 数组总字节数(等于itemsize × size)

数组索引

NumPy数组索引方式与Python列表类似,但支持更丰富的多维索引操作。

一维数组索引

x1 = np.array([5, 0, 3, 3, 7, 9])
print(x1[0])  # 第一个元素 → 5
print(x1[-1])  # 最后一个元素 → 9

多维数组索引

对于多维数组,使用逗号分隔的索引元组:

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

print(x2[0, 0])  # 第一行第一列 → 3
print(x2[2, -1])  # 最后一行最后一列 → 7

重要提示:NumPy数组有固定类型,如果尝试将浮点数存入整数数组,值会被截断:

x1[0] = 3.14159  # 会被截断为3

数组切片

切片操作可以获取数组的子集,语法为start:stop:step

一维数组切片

x = np.arange(10)  # [0,1,2,3,4,5,6,7,8,9]

print(x[:5])   # 前5个元素 → [0 1 2 3 4]
print(x[5:])   # 第5个之后 → [5 6 7 8 9]
print(x[4:7])  # 中间子数组 → [4 5 6]
print(x[::2])  # 每隔一个 → [0 2 4 6 8]
print(x[::-1]) # 反转数组 → [9 8 7 6 5 4 3 2 1 0]

多维数组切片

多维切片使用逗号分隔不同维度的切片:

x2 = np.array([[12, 5, 2, 4],
               [7, 6, 8, 8],
               [1, 6, 7, 7]])

print(x2[:2, :3])  # 前两行前三列
# [[12  5  2]
#  [ 7  6  8]]

print(x2[:3, ::2])  # 所有行,每隔一列
# [[12  2]
#  [ 7  8]
#  [ 1  7]]

print(x2[::-1, ::-1])  # 反转行和列
# [[ 7  7  6  1]
#  [ 8  8  6  7]
#  [ 4  2  5 12]]

获取行和列

获取整行或整列是常见操作:

print(x2[:, 0])  # 第一列 → [12  7  1]
print(x2[0, :])  # 第一行 → [12  5  2  4]
print(x2[0])     # 简写形式 → [12  5  2  4]

数组变形

NumPy提供了多种改变数组形状的方法:

x = np.arange(12)
x_2d = x.reshape(3, 4)  # 变为3行4列
x_3d = x.reshape(2, 3, 2)  # 变为2×3×2三维数组

数组拼接与分割

拼接数组

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

np.concatenate([x, y])  # [1 2 3 4 5 6]

分割数组

x = np.arange(10)
np.split(x, [3, 7])  # 在索引3和7处分割
# [array([0, 1, 2]), array([3, 4, 5, 6]), array([7, 8, 9])]

总结

本文详细介绍了NumPy数组的基础操作,包括:

  1. 数组属性的理解与使用
  2. 单元素索引与修改
  3. 子数组切片技巧
  4. 数组形状的改变
  5. 数组的拼接与分割

这些操作是NumPy数组处理的基础,掌握它们将为后续更复杂的数据处理和分析打下坚实基础。在实际应用中,这些基础操作往往会组合使用,建议读者多加练习以熟练掌握。

data-science-ipython-notebooks donnemartin/data-science-ipython-notebooks: 是一系列基于 IPython Notebook 的数据科学教程,它涉及了 Python、 NumPy、 pandas、 SQL 等多种数据处理工具。适合用于学习数据科学和分析,特别是对于需要使用 Python 和 SQL 等工具进行数据分析和处理的场景。特点是数据科学教程、IPython Notebook、Python、SQL。 data-science-ipython-notebooks 项目地址: https://gitcode.com/gh_mirrors/da/data-science-ipython-notebooks

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

卢千怡

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

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

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

打赏作者

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

抵扣说明:

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

余额充值