您的位置:

Python模块——NumPy:高效处理数组和矩阵运算

一、NumPy是什么

NumPy是Python中最重要的第三方库之一,特别是在数据科学和机器学习领域。它是一个开源的Python扩展库,支持高性能的科学计算和数据分析。一般来说,使用Python进行数据分析一定会用到NumPy。其中的ndarray类型,是在Python中进行大规模数值运算的必备类型,它可以提高Python数值运算的效率。

除此之外,NumPy还提供了很多现代、科学运算所需的函数和方法,涉及线性代数、傅里叶变换、随机数生成等等,为Python在科学计算和数据分析上提供了强大的支持。

二、如何使用NumPy

1. 安装NumPy

$ pip install numpy

2. 引入NumPy模块

import numpy as np

三、NumPy中的ndarray数组

ndarray,即N-dimensional array(多维数组),是NumPy中最重要的一个类。它是一个由相同数据类型的元素组成的基本数据结构,可以进行高效的运算。

在NumPy中,使用array()函数生成ndarray数组。

import numpy as np

# 生成一维数组
arr1 = np.array([1, 2, 3, 4, 5])
print(arr1)

# 生成二维数组
arr2 = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print(arr2)

# 生成三维数组
arr3 = np.array([[[1, 2], [3, 4]], [[5, 6], [7, 8]]])
print(arr3)

输出结果:

[1 2 3 4 5]
[[1 2 3]
 [4 5 6]
 [7 8 9]]
[[[1 2]
  [3 4]]

 [[5 6]
  [7 8]]]

ndarray数组具有以下特点:

  • 它们的元素必须是相同类型的,如int、float、string等。
  • 它们的大小是固定的,一旦创建就不能改变。
  • 对于元素的类型,ndarray数组是占用内存最少的。

四、NumPy中的数组运算

1. 数组的加、减、乘、除

import numpy as np

arr1 = np.array([1, 2, 3, 4, 5])
arr2 = np.array([6, 7, 8, 9, 10])

# 数组的加法
print(arr1 + arr2)

# 数组的减法
print(arr2 - arr1)

# 数组的乘法
print(arr1 * arr2)

# 数组的除法
print(arr1 / arr2)

输出结果:

[ 7  9 11 13 15]
[5 5 5 5 5]
[ 6 14 24 36 50]
[0.16666667 0.28571429 0.375 0.44444444 0.5 ]

2. 数组的加、减、乘、除——广播运算

当进行数组运算时,NumPy会利用广播(broadcasting)机制,自动对不同大小的数组进行扩展,使它们的形状相同。

如下代码中,arr1是一维数组,arr2是二维数组。在计算时,NumPy会将arr1扩展成与arr2一样的形状,使它们可以进行运算。

import numpy as np

arr1 = np.array([1, 2, 3])
arr2 = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])

# 数组的加法(广播运算)
print(arr1 + arr2)

# 数组的减法(广播运算)
print(arr1 - arr2)

# 数组的乘法(广播运算)
print(arr1 * arr2)

# 数组的除法(广播运算)
print(arr1 / arr2)

输出结果:

[[ 2  4  6]
 [ 5  7  9]
 [ 8 10 12]]
[[ 0  0  0]
 [-3 -3 -3]
 [-6 -6 -6]]
[[ 1  4  9]
 [ 4 10 18]
 [ 7 16 27]]
[[1.         1.         1.        ]
 [0.25       0.4        0.5       ]
 [0.14285714 0.25       0.33333333]]

五、NumPy中的矩阵运算

1. 矩阵的创建

使用matrix()函数可以创建矩阵。创建矩阵时需要注意,将所有的数值用英文逗号隔开,不同行之间需要用分号隔开。

import numpy as np

# 创建3*3的矩阵mat1
mat1 = np.matrix('1, 2, 3; 4, 5, 6; 7, 8, 9')
print(mat1)

# 创建2*3的矩阵mat2
mat2 = np.matrix('1, 2, 3; 4, 5, 6')
print(mat2)

# 创建2*2的矩阵mat3
mat3 = np.matrix('1, 2; 3, 4')
print(mat3)

输出结果:

[[1 2 3]
 [4 5 6]
 [7 8 9]]
 
[[1 2 3]
 [4 5 6]]

[[1 2]
 [3 4]]

2. 矩阵的加、减、乘

使用矩阵时,NumPy提供了特殊的运算符:+、-、*。这些运算都是基于矩阵乘法的。

import numpy as np

# 创建两个矩阵
mat1 = np.matrix('1, 2, 3; 4, 5, 6; 7, 8, 9')
mat2 = np.matrix('9, 8, 7; 6, 5, 4; 3, 2, 1')

# 矩阵的加法
print(mat1 + mat2)

# 矩阵的减法
print(mat1 - mat2)

# 矩阵的乘法
print(mat1 * mat2)

输出结果:

[[10 10 10]
 [10 10 10]
 [10 10 10]]

[[-8 -6 -4]
 [-2  0  2]
 [ 4  6  8]]

[[ 30  24  18]
 [ 84  69  54]
 [138 114  90]]

六、NumPy中的适用于数据分析的函数

NumPy除了提供运算外,还提供了适用于数据分析的各种函数。

1. sum()函数——数组元素的累加

sum()函数可以计算数组中元素的累加和。

import numpy as np

# 创建一个数组
arr = np.array([1, 2, 3, 4, 5])

# 计算数组的累加和
print(np.sum(arr))

输出结果:

15

2. mean()函数——数组元素的平均值

mean()函数可以计算数组中元素的平均值。

import numpy as np

# 创建一个数组
arr = np.array([1, 2, 3, 4, 5])

# 计算数组的平均值
print(np.mean(arr))

输出结果:

3.0

3. std()函数——数组元素的标准差

std()函数可以计算数组中元素的标准差。

import numpy as np

# 创建一个数组
arr = np.array([1, 2, 3, 4, 5])

# 计算数组的标准差
print(np.std(arr))

输出结果:

1.4142135623730951

七、总结

本文详细介绍了Python中NumPy模块的基本使用方法,包括如何安装NumPy、引入NumPy模块、ndarray数组的创建、数组和矩阵运算、适用于数据分析的各种函数等。NumPy是Python进行科学计算和数据分析的重要工具,掌握其基本使用方法,将有助于Python相关领域的工作。