第二章 数值计算库-NumPy
NumPy是Python中用于数据分析、机器学习、科学计算的重要软件包。它极大地简化了向量和矩阵的操作及处理。支持大维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库,包括线性代数、傅里叶变换、随机数生成等功能。python的不少数据处理软件包依赖于NumPy作为其基础架构的核心部分,例如pandas、scikit-learn、SciPy和tensorflow等。
使用NumPy前需要导入NumPy库:
In [1]:
import numpy as np #导入NumPy 库,通常简写为np np.__version__ #打印numpy版本
Out[1]:
'1.24.2'
NumPy 最重要的一个特点是其N维数组类ndarray,创建的数组对象是一系列同类型数据的集合,以0下标为开始进行集合中元素的索引。ndarray对象是用于存放同类型元素的多维数组。ndarray中的每个元素在内存中都有相同存储大小的区域。
2.1:创建NumPy数组对象
2.1.1:调用np.array创建NumPy数组
- 创建一个ndarray只需调用NumPy的 array 函数:
numpy.array(object, dtype=None, copy=True, order='K',subok=False, ndmin=0) 参数较多,但最主要的参数是object,需要赋值,可以传Python的元组或列表。其他参数都有默认值,可以不再赋值。具体参数含义如下:
以下为创建numpy数组示例:
- 通过列表list创建numpy数组
In [2]:
arr1_1_1 = np.array([1, 2, 3, 4, 5]) print(arr1_1_1)
[1 2 3 4 5]
- 通过元组tuple创建numpy数组
In [3]:
arr1_1_2 = np.array(('a','b','c','d')) print(arr1_1_2)
['a' 'b' 'c' 'd']
注意: 把变量名或表达式放在jupyter notebook的cell最后一行,无需print语句,Jupyter也会显示输出结果。
In [4]:
#不用print语句直接通过变量名输出该变量结果: arr1_1_1
Out[4]:
array([1, 2, 3, 4, 5])
In [5]:
arr1_1_2
Out[5]:
array(['a', 'b', 'c', 'd'], dtype='<U1')
这种方式简化了输出,还有一个好处是输出了对应的数据类型,后面主要用这种模式输出
可以看出arr1_1_1和arr1_1_2都是NumPy数组,arr1_1_1数组元素为元素默认类型,而arr1_1_2数组元素类型为<U1。
<U1表示:
-
<表示字节顺序,小端(最小有效字节存储在最小地址中)
-
U表示Unicode,数据编码
-
1表示元素的数据大小,即每个元素的最大多少个字符
如下,<U12表示数组的元素最多12个字符
In [6]:
np.array(['a'*12])
Out[6]:
array(['aaaaaaaaaaaa'], dtype='<U12')
In [7]:
np.array(['a']*12)
Out[7]:
array(['a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a'], dtype='<U1')
可以通过设置dtype参数来指定创建的数组元素数据类型,如我们在创建arr1_1_3数组时指定元素数据类型为float:
In [8]:
arr1_1_3 = np.array([1, 2, 3, 4, 5],dtype=float) arr1_1_3
Out[8]:
array([1., 2., 3., 4., 5.])
注意: NumPy数组的元素数据类型需要相同,类型不一致则会根据已知类型转换规则进行转换
In [9]:
arr1_1_4 = np.array(['a'*12,1, 2, 3, 4]) #将整型转换成string类型 arr1_1_4
Out[9]:
array(['aaaaaaaaaaaa', '1', '2', '3', '4'], dtype='<U12')
如上