python numpy 初识

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中高效的进行科学计算,而且还支持广泛的科学计算和数据分析应用。

后端开发标签