首先将numpy与已知的数据类型进行比较:
- 列表:列表中保存的是对象的指针,这种结构不适合做数值运算。
- array模块:能直接保存数值,但是不支持多维数组,也没有各种运算函数,不适合做数值运算。
- Numpy:提供ndarray(存储单一数据类型的快速多维数组对象)和ufunc(能对数组进行元素级计算以及直接对数组执行数学运算的特殊函数)对象,还提供了线性计算、傅里叶变换以及随机数生成的功能。
推荐用以下的方式导入numpy库:import numpy as np
首先介绍Numpy数组的基本属性:
Numpy数组的维数称为秩,每一个线性的数组称为轴,二维数组可以看成两个一维的数组。
Numpy库的核心对象是ndarray(多维数组),其中所有的数据类型必须相同。
Numpy提供了一系列函数用于创建数组,其常用的创建机制有以下三种:
- 将列表或者元组等python数据类型转化为数组;
- 利用arrange(),ones(),zeros()等内置方法自动创建数组
- 利用random等函数创建数组
array()函数可以从列表和元组来创建数组:
import numpy as np a = [1,2,3,4] b = [5,6,7,8] print(np.array(a)) # 将列表a转换为一维数组并输出 c = [a,b] print(np.array(c)) # 列表a,b等长,创建二维数组
输出结果为:
[1 2 3 4] [[1 2 3 4] [5 6 7 8]]
arrage(x,y,i)函数可以被用于创建从x到y,步长为i的数组。当x缺省时,默认从0开始,当y缺省时,默认步长为1。如:
print(np.arange(1,12,2)) # 输出从1-12,步长为2的数组 print(np.arange(12)) # 输出从0-12,步长为1的数组
输出结果为:
[ 1 3 5 7 9 11] [ 0 1 2 3 4 5 6 7 8 9 10 11]
linespace(x,y,n)函数可以从x-y创建元素数量为n的等间隔数列,n缺省值为50,参数x和y分别是数组的开头和结尾,如果写入第三个参数值n,可指定数列的元素个数。如:
import numpy as np print(np.linspace(1,100))
logspace(x,y,n)函数与之类似,可以从x到y创建元素个数为n的等比数列。参数x和y分别是数组的开头和结尾。如果写入第三个参数n,可指定数列元素的个数,n缺省值为50。除此之外,Numpy也提供了随机、全0、全1数组的生成方法。
2.3 数组索引及切片不多说了直接上代码:
import numpy as np arr = np.arange(36).reshape(6,6) #将创建的数组转化为6行6列 print(arr) #返回数组所有元素 print(arr[0]) #返回数组序号为0的行 print(arr[0,3:5]) #返回数组序号为0的行中序号3-4的数据 print(arr[4:,4:]) #返回行序号大于等于4且列序号也大于等于4的数据 print(arr[:,2]) #返回每行中序号为2的元素 print(arr[2::2,::2]) #返回序号从2开始的偶数行中,列序号为偶数的数
输出结果如下:
[[ 0 1 2 3 4 5] [ 6 7 8 9 10 11] [12 13 14 15 16 17] [18 19 20 21 22 23] [24 25 26 27 28 29] [30 31 32 33 34 35]] [0 1 2 3 4 5] [3 4] [[28 29] [34 35]] [ 2 8 14 20 26 32] [[12 14 16] [24 26 28]]2.4 ufunc函数
运算表达式的汇总如下:
具体可参考《Python数据科学手册》



