Numpy 多维数据数组的实现

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 的基础知识。

后端开发标签