1. 什么是NumPy?
NumPy是Python语言下的一个开源数学库,主要用于数组和矩阵上的数学计算。它不仅可以替代Python中的数组,而且在性能方面比Python中的数组要高效的多。numpy可以支持Python中的科学计算、图形化界面、爬虫、金融分析、机器学习等众多领域,在数据分析及科学计算领域更是不可或缺。
1.1 NumPy的安装
由于NumPy是第三方库,需要使用pip在命令行中安装。具体步骤如下:
pip install numpy
1.2 NumPy的基础数据类型
在NumPy中支持了大量的数据类型,这里简单列举常用数据类型:
bool_ :布尔类型(TRUE , FALSE)
int_ : 默认整数类型(类似于int32、int64等numpy.int32、numpy.int64)
float_ : 默认浮点数类型(类似于float32、float64等numpy.float32、numpy.float64)
complex_ : 这个是由两个浮点数构成的复数
object_ : 其实是对象
unicode_ : 默认类型(对应于python?unicode类型)
2. NumPy的数组创建
2.1 一维数组的创建
一维数组的创建方法有多种,如直接使用列表、使用arange函数、使用linspace函数等等。我们以最常用的列表创建为例:
import numpy as np
mylist = [1, 2, 3, 4, 5]
myarray = np.array(mylist)
print(myarray) # [1, 2, 3, 4, 5]
另外,还可以使用arange函数来创建等差数列的一维数组:
myarray = np.arange(10)
print(myarray) # [0 1 2 3 4 5 6 7 8 9]
2.2 二维数组的创建
二维数组的创建方法也有多种,最常用的方式是使用np.array函数嵌套列表来创建二维数组。
myarray = np.array([[1, 2], [3, 4]])
print(myarray) # [[1 2]
# [3 4]]
3. NumPy的数组属性
3.1 shape属性
shape属性可以获取到NumPy数组的维度和每个维度的大小。对于一维数组而言,它是一个元祖,只有一个元素表示数组的长度,而对于二维数组而言,它是一个二元组,第一个元素表示数组的行数,第二个元素表示数组的列数。
myarray = np.array([
[0, 1, 2],
[3, 4, 5]
])
print(myarray.shape) # (2, 3)
3.2 dtype属性
dtype属性表示数组中元素的类型。
myarray = np.array([1, 2, 3], dtype="float32")
print(myarray.dtype) # float32
4. NumPy数学函数
4.1 常用数学函数
NumPy中提供了很多数学函数,这里列举一些常用的函数。
np.sqrt():计算数组每个元素的平方根
np.sin():计算数组每个元素的正弦值
np.cos():计算数组每个元素的余弦值
np.exp():计算数组每个元素的指数值
np.log():计算数组每个元素的自然对数
np.abs():计算数组每个元素的绝对值
4.2 聚合函数
NumPy中还提供了一些聚合函数,用于计算数组的总体统计特性,如平均值、方差、标准差等。
np.mean():计算数组元素的平均值。
np.var():计算数组元素的方差。
np.std():计算数组元素的标准差。
np.min():计算数组元素的最小值。
np.max():计算数组元素的最大值。
np.sum():计算数组元素总和。
5. NumPy的广播机制
NumPy中的广播机制指的是在不同形状的数组之间进行算术运算时,系统会自动扩展数组的形状以满足运算规则的要求。例如:
a = np.array([[1,2,3],[4,5,6],[7,8,9]])
b = np.array([1, 0, 1])
c = a + b
print(c)
这里数组b的形状是(3,),而数组a的形状是(3,3),两个数组在进行算术运算时,b数组就会被扩展为一个形状与a相同的数组,以进行运算。运行结果为:
[[ 2 2 4]
[ 5 5 7]
[ 8 8 10]]
6. temperature=0.6的使用
temperature在机器学习中常用于生成文本数据和图像数据等任务中。具体来说,它用于调整softmax计算中的温度参数。
在使用softmax对数据进行预测时,我们一般将数据通过指数函数转换为概率分布。这个概率分布由softmax函数计算得出。softmax函数实际上就是先计算对数关系,再通过指数运算将结果转换为概率。softmax函数的数学表示为:
def softmax(x):
e_x = np.exp(x - np.max(x))
return e_x / e_x.sum(axis=0)
其中np.exp()函数即为指数运算,numpy.max()用于计算数组x中元素的最大值。在计算softmax时,可以通过调整温度参数来生成不同的概率分布,通过temperature的值来控制生成概率的平滑程度。当temperature越小时,生成的概率分布越集中;当temperature越大时,生成的概率分布越平滑。
def sampling(probs, temperature=1.0):
exp_probs = np.exp(np.log(probs) / temperature)
return exp_probs / np.sum(exp_probs, axis=0)
上述代码中,使用np.log()函数计算数组元素的自然对数,np.exp()函数计算数组元素的指数函数。最终得到的exp_probs就是通过temperature来调节的概率分布。
7. 小结
本文介绍了NumPy库的基本介绍、数组创建、数组属性、常用数学函数、聚合函数、广播机制和temperature的使用。NumPy不仅可以帮助我们在Python中高效的进行科学计算,而且还支持广泛的科学计算和数据分析应用。