1. Numpy 介绍
NumPy 是一个 Python 科学计算的关键模块,它支持大量的维度数组和矩阵运算,以及用于计算的基本函数。Numpy 已被广泛应用在各个领域,例如物理学、生物学、经济学、金融学、神经科学、计算机视觉等等。在使用 NumPy 之前,需要先安装 NumPy 包。
pip install numpy
2. Numpy 多维数据数组
在 NumPy 中,多维数组被称为 ndarray。 ndarray 是一个同构数据多维容器,其中所有元素都必须相同类型,并具有相同大小和形状的多维数组。下面的代码展示了如何创建一个 ndarray:
import numpy as np
arr = np.array([1, 2, 3])
print(arr)
上述代码创建了一个一维数组,内容为 [1, 2, 3]。除此之外,ndarray 还可以是多维数组,例如:
arr2 = np.array([[1, 2, 3], [4, 5, 6]])
print(arr2)
上述代码创建了一个二维数组,内容为:
[[1 2 3]
[4 5 6]]
2.1 ndarray 的属性
ndarray 具有多种属性,其中最重要的是 ndim、shape 和 size。
ndim 属性表示数组的维度数量。例如,以下代码展示了如何创建一个二维数组,并输出它的维度数量:
import numpy as np
arr = np.array([[1, 2], [3, 4], [5, 6]])
print(arr.ndim)
上述代码输出结果为 2,表示该数组是二维数组。
shape 属性表示数组每个维度的大小。例如,以下代码展示了如何创建一个二维数组,并输出它的形状:
import numpy as np
arr = np.array([[1, 2], [3, 4], [5, 6]])
print(arr.shape)
上述代码输出结果为 (3, 2),表示该数组有 3 行 2 列。
size 属性表示数组中元素的总数。例如,以下代码展示了如何创建一个二维数组,并输出它的元素总数:
import numpy as np
arr = np.array([[1, 2], [3, 4], [5, 6]])
print(arr.size)
上述代码输出结果为 6,表示该数组有 6 个元素。
2.2 ndarray 的数据类型
ndarray 有多种数据类型,例如 int8、int16、int32、float32 等。可以通过 dtype 属性获得数组的数据类型。例如,以下代码展示了如何创建一个浮点类型的数组,并输出它的数据类型:
import numpy as np
arr = np.array([1, 2, 3], dtype='float32')
print(arr.dtype)
上述代码输出结果为 float32,表示该数组的数据类型为浮点类型。
2.3 ndarray 的索引和切片
ndarray 的索引和切片和列表很类似。例如,以下代码展示了如何创建一个二维数组,并输出其第一行的内容:
import numpy as np
arr = np.array([[1, 2], [3, 4], [5, 6]])
print(arr[0])
上述代码输出结果为 [1 2],表示该数组的第一行内容。
切片同样也很简单。例如,以下代码展示了如何创建一个二维数组,并输出其前两行的内容:
import numpy as np
arr = np.array([[1, 2], [3, 4], [5, 6]])
print(arr[:2])
上述代码输出结果为:
[[1 2]
[3 4]]
注意代码中的 “:2” 表示取前两个元素。
2.4 ndarray 的运算
在 Numpy 中,可以对 ndarray 进行各种运算,例如加减乘除等。下面的代码展示了如何对两个数组进行加法运算:
import numpy as np
arr1 = np.array([1, 2, 3])
arr2 = np.array([4, 5, 6])
print(arr1 + arr2)
上述代码输出结果为 [5 7 9],表示两个数组的对应元素相加得到的结果。
2.5 ndarray 的广播
在 Numpy 中,广播是一种强大的机制,它允许对不同形状的数组进行算术运算。例如,以下代码展示了如何将一个标量和一个数组相乘:
import numpy as np
arr1 = np.array([1, 2, 3])
print(arr1 * 2)
上述代码输出结果为 [2 4 6],表示将一个标量 2 和一个数组 arr1 相乘。
广播的基本原则是当两个数组的形状不同时,将两个数组的形状扩展至相同的形状,然后再进行运算。例如,以下代码展示了将一个二维数组和一个一维数组相加:
import numpy as np
arr1 = np.array([[1, 2, 3], [4, 5, 6]])
arr2 = np.array([1, 2, 3])
print(arr1 + arr2)
上述代码输出结果为:
[[2 4 6]
[5 7 9]]
注意代码中的一维数组 arr2,它被扩展成了与 arr1 相同的形状,然后再进行相加运算。
2.6 ndarray 的排序
在 Numpy 中,可以对 ndarray 进行排序,包括按行排序、按列排序等多种方式。以下代码展示了如何对一个一维数组进行排序:
import numpy as np
arr = np.array([3, 1, 2])
print(np.sort(arr))
上述代码输出结果为 [1 2 3],表示对数组 arr 进行排序后得到的结果。
除此之外,还可以按行或按列对二维数组进行排序。例如,以下代码展示了如何对一个二维数组按行排序:
import numpy as np
arr = np.array([[3, 1, 2], [6, 5, 4]])
print(np.sort(arr, axis=1))
上述代码输出结果为:
[[1 2 3]
[4 5 6]]
注意代码中的 “axis=1” 表示对数组 arr 按行进行排序。
2.7 ndarray 的存取
在 Numpy 中,可以将 ndarray 存储为文件进行后续使用。以下代码展示了如何将一个一维数组存储为文件:
import numpy as np
arr = np.array([1, 2, 3])
np.save('test.npy', arr)
loaded_arr = np.load('test.npy')
print(loaded_arr)
上述代码中的 np.save 函数将数组 arr 存储在名为 “test.npy” 的文件中,而 np.load 函数可以将该文件加载为数组 loaded_arr。
总结
本文主要介绍了 Numpy 多维数据数组的实现,包括 ndarray 的创建、属性、数据类型、索引和切片、运算、广播、排序和存取等方面,希望能够帮助读者快速了解和掌握 Numpy 的基础知识。