python如何使用numpy

1. numpy概述

NumPy (Numeric Python) 是 Python 语言的一个扩充程序库,支持大量维度数组与矩阵运算,同时对数组运算提供了大量的数学函数库。NumPy 是 SciPy (Scientific Python) 的核心库之一,使用非常广泛。NumPy 提供了高效的多维数组对象 ndarray,以及用于数组计算的函数和工具。

安装方式:在命令行或者conda控制台输入:pip install numpy

2. ndarray的创建

2.1 列表创建

可以通过 np.array() 方法将列表转换为 ndarray 对象,创建一维数组或二维数组。

import numpy as np

# 创建一维数组

a = np.array([1, 2, 3])

print(a) # 输出: [1 2 3]

# 创建二维数组

b = np.array([[1, 2], [3, 4]])

print(b) # 输出: [[1 2]

# [3 4]]

2.2 零数组和单位数组创建

使用 np.zeros() 方法创建零数组,使用 np.ones() 方法创建单位数组。

# 创建一维零数组

c = np.zeros(3)

print(c) # 输出: [0. 0. 0.]

# 创建二维单位数组

d = np.ones((2, 3))

print(d) # 输出: [[1. 1. 1.]

# [1. 1. 1.]]

2.3 linspace和arange方法创建

使用 np.linspace() 方法创建等差数列数组,使用 np.arange() 方法创建等差数列数组。

2.3.1 linspace方法创建

np.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None) 是 numpy 中的函数,用于创建一个一维数组,用于线性的划分指定的区间(起点和终点可以不在数组中呈现)。

start:表示区间的起点。

stop:表示区间的终点。

num:表示区间内生成的点数,默认为50。

endpoint:表示区间终点是否包含在数组中,默认为True。

retstep:表示是否显示区间中两个点的距离。

dtype:表示指定输出数组的类型,常用的如 int、float。

# 生成等差数列数组

e = np.linspace(10, 20, 9)

print(e) # 输出: [10. 11.11111111 12.22222222 13.33333333 14.44444444 15.55555556 16.66666667 17.77777778 18.88888889]

2.3.2 arange方法创建

np.arange([start,] stop[, step,], dtype=None) 是 numpy 中的函数,用于创建一个一维数组,用于线性的划分指定的区间(起点和终点可以不在数组中呈现)。

start:表示区间的起点(包含)。

stop:表示区间的终点(不包含)。

step:表示区间中每个元素的步长,默认为1。

dtype:表示指定输出数组的类型,与 linspace 相同。

# 生成等差数列数组

f = np.arange(10, 20, 2)

print(f) # 输出: [10 12 14 16 18]

3. 数组的基本操作

3.1 数组形状

使用 ndim 属性可以获取数组的维度,shape 属性用于获取数组的形状。

g = np.array([[1, 2], [3, 4], [5, 6]])

print(g.ndim) # 输出: 2

print(g.shape) # 输出: (3, 2)

3.2 索引和切片

使用数组下标可以获取数组的元素,使用切片可以获取数组的子数组。

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

print(h[2, 1]) # 输出: 6

print(h[:2]) # 输出: [[1 2]

# [3 4]]

print(h[:, 1]) # 输出: [ 2 4 6 8 10]

3.3 运算

数组可以进行数学运算及逻辑运算,支持向量化运算。

3.3.1 数学运算

数组可以进行加减乘除等数学符号运算。

i = np.array([1, 2, 3, 4, 5])

j = np.array([2, 2, 2, 2, 2])

print(i + j) # 输出: [3 4 5 6 7]

print(i - j) # 输出: [-1 0 1 2 3]

print(i * j) # 输出: [ 2 4 6 8 10]

print(i / j) # 输出: [0.5 1. 1.5 2. 2.5]

3.3.2 逻辑运算

数组可以进行逻辑运算。

k = np.array([1, 2, 3, 4, 5])

l = np.array([0, 2, 3, 0, 1])

print(k > 2) # 输出: [False False True True True]

print(k == l) # 输出: [False True True False False]

3.4 常用函数

NumPy 包含了很多用于数学计算的函数库。

3.4.1 多维数组的运算

在二维数组中,可以使用 np.sum() 方法进行求和,np.min() 方法求最小值,np.max() 方法求最大值。

m = np.array([[1, 2], [3, 4], [5, 6]])

print(np.sum(m)) # 输出: 21

print(np.min(m)) # 输出: 1

print(np.max(m)) # 输出: 6

print(np.sum(m, axis=0)) # 输出: [ 9 12]

print(np.sum(m, axis=1)) # 输出: [ 3 7 11]

3.4.2 求平均值和方差

使用 np.mean() 方法可以计算数组元素的平均值,使用 np.var() 方法可以计算数组元素的方差。

n = np.array([1, 2, 3, 4, 5])

print(np.mean(n)) # 输出: 3.0

print(np.var(n)) # 输出: 2.0

3.4.3 数组的掩码操作

使用掩码数组对数组进行过滤,得到符合要求的数组。

o = np.array([1, 2, 3, 4, 5])

mask = np.array([True, False, True, False, True])

print(o[mask]) # 输出: [1 3 5]

4. 实例

生成两个矩阵 a 和 b,对两个矩阵求和后打印结果。

import numpy as np

# 生成两个矩阵

a = np.array([[1, 2], [3, 4], [5, 6]])

b = np.array([[7, 8], [9, 10], [11, 12]])

# 对两个矩阵求和

c = a + b

# 打印结果

print(c)

执行结果为:

[[ 8 10]

[12 14]

[16 18]]

后端开发标签