7 NumPy一维数组基础教程

7 NumPy一维数组基础教程

NumPy是Python中用于数值计算的基本库。在众多功能中,一维数组是最简单且最常用的结构。本文将详细介绍如何创建、操作和使用NumPy的一维数组。

什么是一维数组?

在NumPy中,一维数组是一个数据的线性序列,可以包含任何数据类型,如整型、浮点型或者字符串等。它是数组的基本形式,可以看作是一个列表的高级版本。

创建一维数组

使用numpy.array()

最常用的创建一维数组的方法是使用numpy.array()。下面是一个简单的示例:

1
2
3
4
5
import numpy as np

# 创建一个一维数组
arr = np.array([1, 2, 3, 4, 5])
print(arr) # 输出:[1 2 3 4 5]

使用numpy.arange()

numpy.arange()可以生成一个固定间隔的一维数组。它类似于Python内置的range()函数。

1
2
3
# 创建一个从0到9的数组
arr = np.arange(10)
print(arr) # 输出:[0 1 2 3 4 5 6 7 8 9]

我们也可以指定步长:

1
2
3
# 创建步长为2的数组
arr = np.arange(0, 10, 2)
print(arr) # 输出:[0 2 4 6 8]

使用numpy.linspace()

numpy.linspace()可以生成指定范围内的均匀分布的数字。对于一些应用场景,它非常有用。

1
2
3
# 创建一个包含5个元素的数组,从0到1均匀分布
arr = np.linspace(0, 1, 5)
print(arr) # 输出:[0. 0.25 0.5 0.75 1. ]

数组基本操作

获取数组的属性

一维数组的属性如形状数据类型可以通过属性访问:

1
2
3
arr = np.array([1, 2, 3, 4, 5])
print(arr.shape) # 输出:(5,)
print(arr.dtype) # 输出:int64

数组切片

与Python中的列表类似,NumPy数组也可以进行切片操作:

1
2
3
4
5
6
7
arr = np.array([10, 20, 30, 40, 50])

# 获取前3个元素
print(arr[:3]) # 输出:[10 20 30]

# 获取最后2个元素
print(arr[-2:]) # 输出:[40 50]

数组运算

NumPy的一维数组支持各种数学运算,这使得数据处理变得非常方便。例如:

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

# 数组加法
print(arr + 5) # 输出:[6 7 8]

# 数组乘法
print(arr * 2) # 输出:[2 4 6]

数组的聚合函数

你可以使用NumPy提供的聚合函数轻松计算数组的和值、均值、最大值等:

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

# 求和
print(np.sum(arr)) # 输出:15

# 计算均值
print(np.mean(arr)) # 输出:3.0

# 查找最大值
print(np.max(arr)) # 输出:5

案例:应用一维数组进行数据分析

假设我们有一组数据,表示一周内每一天的销量,我们可以使用一维数组来进行基本的数据分析和处理。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 创建一周销量的数组
sales = np.array([200, 300, 250, 400, 500, 450, 380])

# 计算总销量
total_sales = np.sum(sales)
print(f"总销量: {total_sales}")

# 计算平均销量
average_sales = np.mean(sales)
print(f"平均销量: {average_sales}")

# 找到销量最高的那一天
max_sales = np.max(sales)
day_of_max_sales = np.argmax(sales) # 返回索引
print(f"最高销量: {max_sales}, 出现于第{day_of_max_sales + 1}天")

该案例展示了如何利用一维数组进行简单的数据处理与分析。通过NumPy的一维数组,我们能够轻松完成大量的数值计算任务。

结语

学习一维数组是掌握NumPy的基础,理解其创建和操作的方法能够帮助你更有效地进行数据分析、科学计算及机器学习等任务。希望本文能帮助你快速入门NumPy的一维数组!

8 NumPy 二维数组详解

8 NumPy 二维数组详解

NumPy 是 Python 中一个强大的数值计算库,提供了高效的多维数组对象 ndarray。在这一小节中,我们将深入了解如何使用 NumPy 创建和操作二维数组。

创建二维数组

在 NumPy 中,可以通过多种方式创建二维数组。其中最常见的方法是使用 np.array() 函数和 np.arange()np.zeros()np.ones() 函数。

1. 使用 np.array()

我们可以通过传递一个嵌套的列表来创建一个二维数组:

1
2
3
4
5
import numpy as np

# 创建一个二维数组
array_2d = np.array([[1, 2, 3], [4, 5, 6]])
print(array_2d)

输出:

1
2
[[1 2 3]
[4 5 6]]

2. 使用 np.zeros()

np.zeros() 函数可以创建一个指定形状的数组,所有元素初始化为 0

1
2
3
# 创建一个 3x3 的零数组
zeros_array = np.zeros((3, 3))
print(zeros_array)

输出:

1
2
3
[[0. 0. 0.]
[0. 0. 0.]
[0. 0. 0.]]

3. 使用 np.ones()

同样,np.ones() 用于创建一个所有元素初始化为 1 的数组:

1
2
3
# 创建一个 2x4 的单位数组
ones_array = np.ones((2, 4))
print(ones_array)

输出:

1
2
[[1. 1. 1. 1.]
[1. 1. 1. 1.]]

4. 使用 np.arange()np.reshape()

我们可以使用 np.arange() 创建一维数组,然后通过 reshape() 方法将其转换为二维数组:

1
2
3
4
# 创建一个包含 12 个元素的一维数组,并重塑为 3x4 的二维数组
arr = np.arange(12)
reshaped_array = arr.reshape((3, 4))
print(reshaped_array)

输出:

1
2
3
[[ 0  1  2  3]
[ 4 5 6 7]
[ 8 9 10 11]]

访问和修改二维数组元素

二维数组的元素可以通过索引进行访问和修改,访问方式为 array[row, column]

访问元素

1
2
3
# 访问数组的特定元素
element = reshaped_array[1, 2] # 访问第2行第3列的元素
print(element) # 输出 6

修改元素

1
2
3
# 修改指定元素的值
reshaped_array[1, 2] = 99
print(reshaped_array)

输出:

1
2
3
[[ 0  1  2  3]
[ 4 5 99 7]
[ 8 9 10 11]]

数组的切片操作

NumPy 中的切片操作类似于 Python 列表的切片。我们可以提取行、列或子数组。

提取行和列

1
2
3
4
5
6
7
# 提取第 1 行
first_row = reshaped_array[0, :]
print(first_row) # 输出第一行

# 提取第 2 列
second_column = reshaped_array[:, 1]
print(second_column) # 输出第二列

提取子数组

1
2
3
# 提取 2x2 的子数组
sub_array = reshaped_array[1:3, 1:3]
print(sub_array)

输出:

1
2
[[ 5 99]
[ 9 10]]

数组的数学运算

NumPy 的强大之处在于它能够高效地进行数组运算,包括加法、乘法等。

1
2
3
# 数组加法
added_array = reshaped_array + 10
print(added_array)

输出:

1
2
3
[[10 11 12 13]
[14 15 109 17]
[18 19 20 21]]

总结

在这一节中,我们学习了如何创建和操作 NumPy 的二维数组。通过实际案例,我们掌握了如何使用不同的方法创建数组、访问和修改元素、进行切片操作以及进行基本的数学运算。NumPy 的灵活性和高效性使其成为科学计算的基础工具之一。

9 NumPy 多维数组入门

9 NumPy 多维数组入门

NumPy 是 Python 的一个强大库,用于科学计算,其核心特性之一是支持多维数组。本文将详细介绍如何创建和操作 NumPy 的多维数组。

创建多维数组

NumPy 提供了多种方法来创建多维数组。这里我们介绍几种常用的方法。

通过列表创建多维数组

可以直接通过嵌套的 Python 列表创建多维数组。例如:

1
2
3
4
5
import numpy as np

# 创建一个 2x3 的二维数组
array_2d = np.array([[1, 2, 3], [4, 5, 6]])
print(array_2d)

输出结果为:

1
2
[[1 2 3]
[4 5 6]]

使用 zeros 创建数组

zeros 函数可以创建一个指定形状的数组,数组的元素初始值为 0:

1
2
3
# 创建一个 3x3 的二维数组,元素全为 0
array_zeros = np.zeros((3, 3))
print(array_zeros)

输出结果为:

1
2
3
[[0. 0. 0.]
[0. 0. 0.]
[0. 0. 0.]]

使用 ones 创建数组

zeros 类似,ones 函数创建一个全部为 1 的数组:

1
2
3
# 创建一个 2x4 的二维数组,元素全为 1
array_ones = np.ones((2, 4))
print(array_ones)

输出结果为:

1
2
[[1. 1. 1. 1.]
[1. 1. 1. 1.]]

使用 arange 创建数组

arange 函数可以创建一个包含指定范围内的元素的一维数组,可以配合 reshape 方法转换为多维数组:

1
2
3
# 从 0 到 11 创建一维数组,并转换为 3x4 的二维数组
array_arange = np.arange(12).reshape((3, 4))
print(array_arange)

输出结果为:

1
2
3
[[ 0  1  2  3]
[ 4 5 6 7]
[ 8 9 10 11]]

多维数组的操作

访问和切片

多维数组的访问与切片与 Python 列表相似。通过下标来访问特定元素:

1
2
# 访问数组中的特定元素
print(array_2d[0, 1]) # 输出 2

可以使用切片获取数组中的一部分:

1
2
# 获取前两行
print(array_arange[0:2, :])

输出结果为:

1
2
[[0 1 2 3]
[4 5 6 7]]

数组的形状

可以使用 shape 属性获取数组的形状,用 reshape 方法修改数组的形状:

1
2
3
4
5
6
# 查看数组的形状
print(array_arange.shape) # 输出 (3, 4)

# 重新调整数组形状
reshaped_array = array_arange.reshape((4, 3))
print(reshaped_array)

输出结果为:

1
2
3
4
[[ 0  1  2]
[ 3 4 5]
[ 6 7 8]
[ 9 10 11]]

数组的运算

NumPy 支持对多维数组进行各种运算,例如加法、乘法等:

1
2
3
4
5
6
7
# 创建两个数组进行运算
array_a = np.array([[1, 2], [3, 4]])
array_b = np.array([[5, 6], [7, 8]])

# 数组相加
added_array = array_a + array_b
print(added_array)

输出结果为:

1
2
[[ 6  8]
[10 12]]

广播机制

NumPy 的广播机制允许不同形状的数组进行运算。例如,可以将一个标量值加到多维数组上的每个元素中:

1
2
3
# 标量加法
result = array_a + 10
print(result)

输出结果为:

1
2
[[11 12]
[13 14]]

总结

本文简单介绍了 NumPy 中多维数组的创建和基本操作,包括访问、切片、形状和运算。掌握这些基础知识后,你就可以开始利用 NumPy 进行更复杂的科学计算和数据分析了。继续探索 NumPy 的高级特性,更好地利用这个强大的库吧!