NumPy是python数值计算中最为重要的基础包,大多数计算包都提供了基于NumPy的科学函数功能,将NumPy的数组对象作为数据交换的通用语。
NumPy的优点:
- ndarray,一种高效多维数组,提供了基于数组的便捷算术操作以及灵活的广播功能。
- 对所有数据进行快速的矩阵计算,而无须编写循环程序。
- 对硬盘中数组数据进行读写的工具,并对内存映射文件进行操作。
- 线性代数、随机数生成以及傅里叶变换功能。
- 用于连接NumPy到C、C++和FORTRAN语言类库的C语言API。
NumPy ndarray:多维数组对象
NumPy的核心特征之一是N-维数组对象---ndarray。ndarray是python中一个快速、灵活的大型数据集容器。数组运行你使用类似于标量的操作语法在整块数据上进行数学计算。
1 import numpy as np 2 #生成随机数组 3 data=np.random.randn(2,3) 4 #输出随机数组 5 print(data) 6 #将数组整体*10输出 7 print(data*10) 8 #将两个data数组整体相加输出 9 print(data+data) 10 11 12 [[-1.42334019 -0.00819673 1.83179575] 13 [-0.82282546 1.4418176 -0.35472472]] 14 [[-14.23340186 -0.08196733 18.3179575 ] 15 [ -8.22825455 14.41817598 -3.54724716]] 16 [[-2.84668037 -0.01639347 3.6635915 ] 17 [-1.64565091 2.8836352 -0.70944943]]
表一 数组生成函数
函数名 |
描述 |
array | 将输入数据(可以是列表、元组、数组以及其他序列)转换为ndarray,如不显示指明数据类型,将自动推断;默认复制所有的输入数据 |
asarray | 将输入转换为ndarray,但如果输入已经是ndarray则不再复制 |
arange | python内建函数range的数组版,返回一个数组 |
ones | 根据给定形状和数据类型生成全1数组 |
ones_like | 根据所给的数组生成一个形状一样的全1数组 |
zeros | 根据给定形状和数据类型生成全0数组 |
zeros_like | 根据所给的数组生成一个形状一样的全0数组 |
empty | 根据给定形状生成一个没有初始化数值的空数组 |
empty_like | 根据所给的数组生成一个形状一样的但没有初始化数值的空数组 |
full | 根据给定的形状和数据类型生成指定数值的数组 |
full_like | 根据所给的数组生成一个形状一样但内容是指定数值的数组 |
eye,identity | 生成一个N×N特征矩阵(对角线位置都是1,其余位置是0) |
NumPy数组算术
任何在两个等尺寸数组之间的算术操作都应用了逐元素操作的方式
1 import numpy as np 2 #生成数组 3 arr=np.array([[1.,2.,3.],[3.,5.,6.]]) 4 #打印数组 5 print(arr) 6 #乘法 7 print(arr*arr) 8 #减法 9 print(arr-arr) 10 #带有标量计算的算术操作,会把计算参数传递给数组的每一个元素: 11 #倒数 12 print(1/arr) 13 #开平方 14 print(arr**0.5) 15 #同尺寸数组之间的比较,会产生一个布尔值数组 16 arr2=np.array([[0.,4.,1.],[7.,2.,12.]]) 17 print(arr2) 18 #比较数组大小 19 print(arr2>arr) 20 21 22 23 [[1. 2. 3.] 24 [3. 5. 6.]] 25 26 [[ 1. 4. 9.] 27 [ 9. 25. 36.]] 28 29 [[0. 0. 0.] 30 [0. 0. 0.]] 31 32 [[1. 0.5 0.33333333] 33 [0.33333333 0.2 0.16666667]] 34 35 [[1. 1.41421356 1.73205081] 36 [1.73205081 2.23606798 2.44948974]] 37 38 [[ 0. 4. 1.] 39 [ 7. 2. 12.]] 40 41 [[False True False] 42 [ True False True]]
基础索引与切片
一维数组的索引