NumPy基础教程
1.基础认识
NumPy中主要操作对象是N维数组(narray)。与数学有所不同,NumPy有自己的一些定义:维度(dimension)被称为轴(axis),轴的数量被称为秩(rank)。
a = [1,2,3] #a的秩是1,第一个轴的长度是3
b = [[1,2,3],[2,4,5]] #b的秩是2,第一个轴的长度是2,第2个轴的长度是3
NumPy中的N维数组(narray)有许多便利的属性,我们举例说明
>>> import numpy as np
>>> a = np.arange(15).reshape(3, 5) #arange(n):生成从0到n的序列;reshape(x,y):将序列重新塑造成3行5列的narray
>>> a
array([[ 0, 1, 2, 3, 4],
[ 5, 6, 7, 8, 9],
[10, 11, 12, 13, 14]])
>>> a.shape #返回narray的(行数,列数)
(3, 5)
>>> a.ndim #返回narray的秩
2
>>> a.dtype.name #返回narray中数据的类型
'int64'
>>> a.itemsize #返回narray中每个元素的比特大小8 = 64 / 8
8
>>> a.size #返回narray中的元素个数
15
>>> type(a) #返回a的类型
<type 'numpy.ndarray'>
(2)创建N维数组
创建N维数组可以有很多方式,可以对Python自带的列表和元组使用array()函数进行创建N维数组
a = array([12,3,41])
b = array((1,2,3,4))
创建秩为2的narray:
a = array([(1,2,3),(4,5,6)])
a = array([[1,2,3],[4,5,6]])
可以在创建narray的同时指定其中的数据类型
c = array([[1,2,3],[4,5,6]],dtype = complex) #复数型
创建其中元素全为0的narray:
a = zeros((3,4)) #创建3行4列的零矩阵
创建其中元素全为1的narray:
a = ones((2,3,4))
创建其中元素内容随机但受内存状况影响的narray:
a = empty((2,3)) #默认数据类型为 float64
创建大于等于m,小于等于n,步长为k的序列:
a = arange(m,n,k)
a = arange(2,5,2)
>>>a
array([2,4])
创建从m到n的k个数的序列:
a = linspace(m,n,k)
a = linspace(0,2,9)
>>>a
array([ 0. , 0.25, 0.5 , 0.75, 1. , 1.25, 1.5 , 1.75, 2. ])
(3)输出N维数组
NumPy中的N维数组可以直接通过Python自带的print()函数输出。
应该注意,N维数组的输出顺序是:倒数第一个轴是从左往右输出,除了倒数第一个轴的其他所有轴是从上往下输出
>>> a = np.arange(6) # 1d array
>>> print(a)
[0 1 2 3 4 5]
>>>
>>> b = np.arange(12).reshape(4,3) # 2d array
>>> print(b)
[[ 0 1 2]
[ 3 4 5]
[ 6 7 8]
[ 9 10 11]]
>>>
>>> c = np.arange(24).reshape(2,3,4) # 3d array
>>> print(c)
[[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]]
[[12 13 14 15]
[16 17 18 19]
[20 21 22 23]]]
(4)对narray的基本操作
在NumPy中,对N维数组的基本数学运算都是对其中的元素直接操作:
>>> a = np.array( [20,30,40,50] )
>>> b = np.arange( 4 )
>>> b
array([0, 1, 2, 3])
>>> c = a-b
>>> c
array([20, 29, 38, 47])
>>> b**2
array([0, 1, 4, 9])
>>> 10*np.sin(a)
array([ 9.12945251, -9.88031624, 7.4511316 , -2.62374854])
>>> a<35
array([ True, True, False, False], dtype=bool)
请注意,上面所提到的乘法运算并不是线性代数中的矩阵乘法。若要使用矩阵乘法,请使用dot()方法:
>>> A = np.array( [[1,1],
... [0,1]] )
>>> B = np.array( [[2,0],
... [3,4]] )
>>> A*B # elementwise product
array([[2, 0],
[0, 4]])
>>> A.dot(B) # matrix product
array([[5, 4],
[3, 4]])
>>> np.dot(A, B) # another matrix product
array([[5, 4],
[3, 4]])
NumPy中也自带了许多被称为“通用函数”的数学函数:
>>> B = np.arange(3)
>>> B
array([0, 1, 2])
>>> np.exp(B)
array([ 1. , 2.71828183, 7.3890561 ])
>>> np.sqrt(B)
array([ 0. , 1. , 1.41421356])
>>> C = np.array([2., -1., 4.])
>>> np.add(B, C)
array([ 2., 0., 6.])
还有许多函数没有列出,请自行参照官方文档。
官方文档:https://docs.scipy.org/doc/numpy/user/