Numpy 2D Array 深入解析
Numpy 是一个强大的 Python 库,主要用于进行大规模的数值计算。它提供了一个高性能的多维数组对象,以及用于处理这些数组的工具。本文将重点介绍 Numpy 中的二维数组(2D array),包括其创建、操作和应用的各个方面。
1. 创建二维数组
在 Numpy 中,二维数组可以通过多种方式创建。最直接的方法是使用 numpy.array()
函数,将列表的列表转换为二维数组。
示例代码 1:创建二维数组
import numpy as np
# 创建一个 2x3 的二维数组
array_2d = np.array([[1, 2, 3], [4, 5, 6]])
print(array_2d)
Output:
除了直接创建,还可以使用特定的函数来生成二维数组,如 zeros()
, ones()
, 和 full()
。
示例代码 2:使用 zeros 创建全零二维数组
import numpy as np
# 创建一个 3x4 的全零二维数组
zero_array = np.zeros((3, 4))
print(zero_array)
Output:
示例代码 3:使用 ones 创建全一二维数组
import numpy as np
# 创建一个 2x5 的全一二维数组
ones_array = np.ones((2, 5))
print(ones_array)
Output:
示例代码 4:使用 full 创建指定值的二维数组
import numpy as np
# 创建一个 3x3 的二维数组,所有元素都是 7
full_array = np.full((3, 3), 7)
print(full_array)
Output:
2. 访问二维数组元素
访问二维数组的元素可以通过索引来完成。在 Numpy 中,可以使用方括号 []
来访问数组中的元素。
示例代码 5:访问二维数组的元素
import numpy as np
array_2d = np.array([[1, 2, 3], [4, 5, 6]])
# 访问第一行第二列的元素
element = array_2d[0, 1]
print(element)
Output:
3. 数组的切片
切片是 Python 和 Numpy 中常用的一个功能,它允许我们从数组中提取一部分元素。
示例代码 6:二维数组的行切片
import numpy as np
array_2d = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
# 获取第二行
row_slice = array_2d[1, :]
print(row_slice)
Output:
示例代码 7:二维数组的列切片
import numpy as np
array_2d = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
# 获取第三列
column_slice = array_2d[:, 2]
print(column_slice)
Output:
4. 数组的形状修改
Numpy 提供了多种方式来修改数组的形状,其中 reshape()
函数是最常用的。
示例代码 8:使用 reshape 修改数组形状
import numpy as np
array_1d = np.array([1, 2, 3, 4, 5, 6])
# 将一维数组转换为 2x3 的二维数组
array_2d = array_1d.reshape((2, 3))
print(array_2d)
Output:
5. 数组的转置
转置是线性代数中的一个重要操作,它将数组的行转换为列,列转换为行。
示例代码 9:数组的转置
import numpy as np
array_2d = np.array([[1, 2, 3], [4, 5, 6]])
# 转置数组
transposed_array = array_2d.T
print(transposed_array)
Output:
6. 数组的数学运算
Numpy 提供了一系列的数学函数来支持数组的运算,包括加法、减法、乘法和除法等。
示例代码 10:数组的加法
import numpy as np
array_2d_1 = np.array([[1, 2], [3, 4]])
array_2d_2 = np.array([[5, 6], [7, 8]])
# 数组相加
sum_array = np.add(array_2d_1, array_2d_2)
print(sum_array)
Output:
示例代码 11:数组的点乘
import numpy as np
array_2d_1 = np.array([[1, 2], [3, 4]])
array_2d_2 = np.array([[5, 6], [7, 8]])
# 数组点乘
dot_product = np.dot(array_2d_1, array_2d_2)
print(dot_product)
Output:
7. 数组的广播
广播是 Numpy 中一个强大的功能,它允许不同形状的数组进行数学运算。
示例代码 12:数组的广播
import numpy as np
array_2d = np.array([[1, 2], [3, 4]])
scalar = 5
# 数组与标量相乘
broadcasted_array = array_2d * scalar
print(broadcasted_array)
Output:
8. 数组的堆叠
堆叠是将多个数组按照一定的顺序组合成一个新数组的过程。
示例代码 13:水平堆叠
import numpy as np
array_2d_1 = np.array([[1, 2], [3, 4]])
array_2d_2 = np.array([[5, 6], [7, 8]])
# 水平堆叠
hstack_array = np.hstack((array_2d_1, array_2d_2))
print(hstack_array)
Output:
示例代码 14:垂直堆叠
import numpy as np
array_2d_1 = np.array([[1, 2], [3, 4]])
array_2d_2 = np.array([[5, 6], [7, 8]])
# 垂直堆叠
vstack_array = np.vstack((array_2d_1, array_2d_2))
print(vstack_array)
Output:
9. 数组的分割
分割是将一个数组分成多个小数组的过程。
示例代码 15:水平分割
import numpy as np
array_2d = np.array([[1, 2, 3, 4], [5, 6, 7, 8]])
# 水平分割
hsplit_arrays = np.hsplit(array_2d, 2)
print(hsplit_arrays[0])
print(hsplit_arrays[1])
Output:
示例代码 16:垂直分割
import numpy as np
array_2d = np.array([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12], [13, 14, 15, 16]])
# 垂直分割
vsplit_arrays = np.vsplit(array_2d, 2)
print(vsplit_arrays[0])
print(vsplit_arrays[1])
Output:
10. 数组的排序
Numpy 提供了 sort()
函数来对数组进行排序。
示例代码 17:对数组进行排序
import numpy as np
array_2d = np.array([[12, 11], [10, 9]])
# 对数组进行排序
sorted_array = np.sort(array_2d)
print(sorted_array)
Output:
11. 数组的统计计算
Numpy 提供了一系列的函数来进行统计计算,如求和、求平均值、求最大值和最小值等。
示例代码 18:求和
import numpy as np
array_2d = np.array([[1, 2], [3, 4]])
# 求和
sum_value = np.sum(array_2d)
print(sum_value)
Output:
示例代码 19:求平均值
import numpy as np
array_2d = np.array([[1, 2], [3, 4]])
# 求平均值
mean_value = np.mean(array_2d)
print(mean_value)
Output:
示例代码 20:求最大值和最小值
import numpy as np
array_2d = np.array([[1, 2], [3, 4]])
# 求最大值和最小值
max_value = np.max(array_2d)
min_value = np.min(array_2d)
print(max_value)
print(min_value)
Output:
以上就是关于 Numpy 二维数组的详细介绍,包括了创建、访问、切片、修改形状、转置、数学运算、广播、堆叠、分割、排序和统计计算等方面的内容。