目录
Python是一种高级编程语言,由Guido van Rossum于1991年创建。它以简洁、易读的语法而闻名,并且具有强大的功能和广泛的应用领域。Python具有丰富的标准库和第三方库,可以用于开发各种类型的应用程序,包括Web开发、数据分析、人工智能、科学计算、自动化脚本等。
Python本身是一种伟大的通用编程语言,在一些流行的库(numpy,scipy,matplotlib)的帮助下,成为了科学计算的强大环境。本系列将介绍Python编程语言和使用Python进行科学计算的方法,主要包含以下内容:
numpy | 1.21.6 | |
python | 3.7.16 |
python --version
- import sys
- import numpy as np
-
- print("Python 版本:", sys.version)
- print("NumPy 版本:", np.__version__)
NumPy(Numerical Python)是一个用于科学计算的Python库。它提供了一个强大的多维数组对象(ndarray),用于进行高效的数值运算和数据处理。Numpy的主要功能包括:
多维数组:Numpy的核心是ndarray对象,它是一个多维数组,可以存储同类型的元素。这使得Numpy非常适合处理向量、矩阵和其他多维数据结构。
数学函数:Numpy提供了许多常用的数学函数,如三角函数、指数函数、对数函数等。这些函数可以直接应用于整个数组,而无需编写循环。
广播(Broadcasting):Numpy支持不同形状的数组之间的运算,通过广播机制,可以对形状不同的数组进行逐元素的操作,而无需显式地编写循环。
线性代数运算:Numpy提供了丰富的线性代数运算函数,如矩阵乘法、求解线性方程组、特征值计算等。
随机数生成:Numpy包含了用于生成各种概率分布的随机数的函数,如均匀分布、正态分布、泊松分布等。
数据操作:Numpy提供了很多用于操作数组的函数,如切片、索引、排序、去重等。
Numpy广泛应用于科学计算、数据分析、机器学习等领域。它的高效性和便捷性使得它成为Python数据科学生态系统中不可或缺的组成部分。
NumPy的ndarray
对象是NumPy库中最重要的对象之一,也是进行科学计算的核心数据结构。ndarray
代表了一个多维的数组,可以存储相同类型的元素。
ndarray.shape
:返回表示数组形状的元组,例如(2, 3)
表示2行3列的数组。ndarray.dtype
:返回数组中元素的数据类型,例如int
、float
、bool
等。ndarray.ndim
:返回数组的维度数,例如1表示一维数组,2表示二维数组。a. 索引
arr[0]
将返回数组arr
中的第一个元素。arr[arr > 5]
将返回数组arr
中大于5的元素。arr[0, 1]
将返回多维数组arr
中第一行第二列的元素。- import numpy as np
-
- arr = np.array([1, 2, 3, 4, 5])
-
- # 整数索引
- print(arr[0]) # 输出:1
-
- # 布尔索引
- print(arr[arr > 3]) # 输出:[4, 5]
-
- # 多维索引
- arr = np.array([[1, 2, 3], [4, 5, 6]])
- print(arr[0, 1]) # 输出:2
b. 切片
arr[1:5]
将返回数组arr
中索引为1到4的元素。arr[1:5:2]
将返回数组arr
中索引为1、3的元素。arr[..., 1]
将返回多维数组arr
中的第二列。arr[-1]
将返回数组arr
中的最后一个元素。- import numpy as np
-
- arr = np.array([1, 2, 3, 4, 5])
-
- # 基本切片
- print(arr[1:4]) # 输出:[2, 3, 4]
-
- # 步长切片
- print(arr[1:5:2]) # 输出:[2, 4]
-
- # 省略号切片
- arr = np.array([[1, 2, 3], [4, 5, 6]])
- print(arr[..., 1]) # 输出:[2, 5]
-
- # 负数索引和切片
- print(arr[-1]) # 输出:[4, 5, 6]
a. 获取数组形状
b. 改变数组形状
c. 展平数组
- import numpy as np
-
- arr = np.array([[1, 2, 3], [4, 5, 6]])
-
- # 获取数组形状
- print(arr.shape) # 输出:(2, 3)
-
- # 改变数组形状
- reshaped_arr = arr.reshape((3, 2))
- print(reshaped_arr)
- # 输出:
- # [[1 2]
- # [3 4]
- # [5 6]]
-
- # 展平数组
- flattened_arr = arr.flatten()
- print(flattened_arr) # 输出:[1 2 3 4 5 6]
数组转置操作是指将数组的行和列互换的操作,转置操作对于处理二维数组特别有用,例如在矩阵运算和线性代数中经常需要对数组进行转置。
a. 使用.T属性
在NumPy中,多维数组对象(ndarray)具有一个名为.T
的属性,可以用于进行转置操作。该属性返回原始数组的转置结果,即行变为列,列变为行。
- import numpy as np
-
- arr = np.array([[1, 2, 3], [4, 5, 6]])
- transposed_arr = arr.T
- print(transposed_arr)
输出:
- [[1 4]
- [2 5]
- [3 6]]
b. 使用transpose()
函数
另一种实现数组转置的方法是使用np.transpose()
函数。该函数接受一个多维数组作为参数,并返回其转置结果。
- import numpy as np
-
- arr = np.array([[1, 2, 3], [4, 5, 6]])
- transposed_arr = np.transpose(arr)
- print(transposed_arr)
输出:
- [[1 4]
- [2 5]
- [3 6]]
数组拼接操作是指将多个数组按照指定的方式进行连接的操作。
np.concatenate()
函数
np.concatenate()函数用于沿指定的轴连接数组。可以沿着现有的轴连接两个或多个数组,也可以指定
axis参数来创建一个新的轴。np.concatenate()`函数将`arr1`和`arr2`沿着行方向(`axis=0`)进行了拼接:
- import numpy as np
-
- arr1 = np.array([[1, 2], [3, 4]])
- arr2 = np.array([[5, 6]])
-
- # 沿行方向拼接数组
- concatenated_arr = np.concatenate((arr1, arr2), axis=0)
- print(concatenated_arr)
输出:
- [[1 4]
- [2 5]
- [3 6]]
np.vstack()
函数
np.vstack()函数用于垂直拼接(按行堆叠)两个或多个数组。它将输入的数组沿着垂直方向堆叠起来,生成一个新的数组。
- import numpy as np
-
- arr1 = np.array([[1, 2], [3, 4]])
- arr2 = np.array([[5, 6]])
-
- # 垂直拼接数组
- vstack_arr = np.vstack((arr1, arr2))
- print(vstack_arr)
输出:
- [[1 4]
- [2 5]
- [3 6]]
np.hstack()
函数
np.hstack()函数用于水平拼接(按列堆叠)两个或多个数组。它将输入的数组沿着水平方向堆叠起来,生成一个新的数组。
- import numpy as np
-
- arr1 = np.array([[1, 2], [3, 4]])
- arr2 = np.array([[5, 6]])
-
- # 水平拼接数组
- hstack_arr = np.hstack((arr1, arr2.T))
输出:
- [[1 2 5]
- [3 4 6]]