NumPy库是Python中用于科学计算的核心库。它提供了一个高性能多维数组对象,以及使用和处理这些数组的工具。
Numpy是每一位学习python的小伙伴的必修课,因为它真的真的太实用了。
举几个例子:
我们在线性代数中学习的向量就是一维数组,矩阵就是二维数组,而Numpy就是专业来处理数组的,因此我们可以使用Numpy进行向量和矩阵的运算。
图片本质上都可以用数组来表示,黑白图就是一个矩阵(矩阵元素值就是像素值),而彩色图则是三维数组,因为其包含了RGB三个颜色通道,每一个颜色通道是一个矩阵,因此由3个矩阵组合成三维数组,所以咱们可以用Numpy对图片进行大刀阔斧地修改。
…
总之,任何可以用数组来表示的事物,都可以使用Numpy来进行花式操作。
本文旨在向读者介绍Numpy的基础知识,包括使用Numpy:
本文将会对介绍的每一个Numpy函数进行代码演示,从而能够帮助读者快速掌握该函数的使用。
本文介绍数组的基本数学运算和数组变换。
数组的基本数学运算包括:逐元素(element-wise)运算(即对数组的各元素做相同的运算)、数组元素聚合运算、数组之间的加减乘除、数组之间的比较、数组元素排序 ···
我们依然先构造一个数组:
array = np.random.randint(0,10,(2,2,2))
print (array)
>>>
[[[4 1]
[9 4]]
[[5 7]
[9 4]]]
np.exp()
#对数组的每一个元素求exp
np.exp(array)
>>>
array([[[5.45981500e+01, 2.71828183e+00],
[8.10308393e+03, 5.45981500e+01]],
[[1.48413159e+02, 1.09663316e+03],
[8.10308393e+03, 5.45981500e+01]]])
np.sin()
#对数组的每一个元素求sin
np.sin(array)
>>>
array([[[-0.7568025 , 0.84147098],
[ 0.41211849, -0.7568025 ]],
[[-0.95892427, 0.6569866 ],
[ 0.41211849, -0.7568025 ]]])
np.sqrt()
#对数组的每一个元素开根号
np.sqrt(array)
>>>
array([[[2., 1.],
[3., 2.]],
[[2.23606798, 2.64575131],
[3., 2.]]])
np.log()
#对数组的每一个元素求log
np.log(array)
>>>
array([[[1.38629436, 0. ],
[2.19722458, 1.38629436]],
[[1.60943791, 1.94591015],
[2.19722458, 1.38629436]]])
除了上述函数,Numpy还提供了很多数学运算的函数,大家可以在日后的学习过程中逐渐积累。
依然使用之前创建的array举例:
print (array)
>>>
[[[4 1]
[9 4]]
[[5 7]
[9 4]]]
np.sum()
求和
#对所有元素求和
np.sum(array)
>>>43
#或者,更为简便地
array.sum()
>>>43
下述函数同理:
np.max()
最大值
np.min()
最小值
np.mean()
平均值
np.median
中位数
np.std()
标准差
np.var()
方差
······
需要注意地是,上述函数如果没有指定axis的取值,默认就是对数组的所有元素求统计量,倘若需要对指定维度(axis,如某行或某列)上的元素求统计量,则需要对axis进行设定。
为了让本文更适于初学者,本文不对axis的设定方法做展开。但是由于axis在python数据分析中几乎无处不在,所以我特地写了一篇十分通俗易懂的小短文《小白学Python:通俗理解axis》来帮助读者更好地理解和活用axis。
我们首先创建两个形状相同的数组:
a=np.arange(6).reshape((2,3))
b=np.arange(6).reshape((2,3))
print (a)
>>>
[[0 1 2]
[3 4 5]]
print (b)
>>