首页 > 编程笔记

NumPy库的安装和使用

NumPy 是 Python 语言的一个扩展程序库,支持大量的数组和矩阵运算。

NumPy 包含一个强大的 N 维数组对象 ndarra,它是存储单一数据类型的多维数组,它与 Python 数组的主要区别在于:数组大小固定和数组类型相同。

NumPy 库具备强大的广播功能,便于矢量化数组操作。NumPy 库整合了C/C++/FORTRAN 代码的工具包,具有线性代数、傅里叶变换、随机数生成等功能。

NumPy库的安装

Python 官网上的发行版是不包含 NumPy 库的,使用之前,首先要检查是否已安装 NumPy 库。

在 Windows 系统任务栏搜索框中输入“CMD”,弹出命令行窗口,如下图所示,在光标处输入“pip list”,查看系统是否安装了 NumPy 库。


图 1 查看系统是否安装了NumPy库

如果没有安装,在命令行输入下图中的命令,即可进行 NumPy 库的安装。


图 2 NumPy库安装命令

安装完毕,打开 Python,输入下图中的命令,如果能生成对角矩阵,则表示 NumPy 库安装成功。


图 3 查看系统是否成功安装NumPy库

如果计算机中安装了 PyCharm 软件,也可以在 PyCharm 中查看是否安装了 NumPy 库,具体操作步骤如下。

1) 打开 PyCharm 软件,单击菜单栏中的“File”→“Settings”,弹出如下图所示的对话框。


图 4 “Settings”对话框

2) 如下图所示,在“Settings”对话框中选择“Project Interpreter”在对话框的空白处将显示已安装的库及对应版本号,单击右侧的“+”按钮。


图 5 添加库

在弹出的对话框中搜索要添加库的名称,即可在线安装对应的库,如图 6 所示。


图 6 在线安装NumPy库

NumPy库的使用

安装了 NumPy 库后,编程时就可以调用 NumPy 库了,下面简单介绍 NumPy 库的使用方法。

1) 创建数组

NumPy 库最重要的特点就是数组对象 ndarray,它用于存放同类型元素的多维数组,每个元素在内存中都有相同大小的存储区域,ndarray 由指向数据的指针 header、数据类型 dtype、描述数组形状的元组、跨度元组组成。

数组除使用底层 ndarray 构造器来创建外,还可以用其他形式创建,示例代码如下。
# 导入NumPy库
import numpy as np

# 创建一个一维数组,元素类型为复数
a = np.array([1, 2, 3], dtype=complex)
print("a =", a)

# 创建一个3x3的空数组,元素类型为整型
b = np.empty((3, 3), dtype=np.int)
print("b =", b)

# 创建一个3x3的全0数组,元素类型为整型
c = np.zeros((3, 3), dtype=np.int)
print("c =", c)

# 创建一个3x3的全1数组,元素类型为整型
d = np.ones((3, 3), dtype=np.int)
print("d =", d)

# 将列表e转换为ndarray,并打印数组f
e = [1, 2, 3]
f = np.asarray(e)
print("f =", f)

# 将元组g转换为ndarray,并打印数组h
g = (1, 2, 3)
h = np.asarray(g)
print("h =", h)

# 接收buffer输入参数,以流的方式读入并转化成ndarray对象,然后打印数组k
j = b'What is Python'
k = np.frombuffer(j, dtype='S1')
print("k =", k)

# 创建一个从1到19、间隔为3的数组l,并打印数组l
l = np.arange(1, 20, 3)
print("l =", l)

# 创建一个数组m,它是一个等差数列,包含5个元素,起始数为1,终止数为20
m = np.linspace(1, 20, 5)
print("m =", m)
上述程序运行结果如下:

a = [1.+0.j 2.+0.j 3.+0.j]
b = [[ 94514809566448              17               0]
[              0               0               0]
[              0               0               0]]
c = [[0 0 0]
[0 0 0]
[0 0 0]]
d = [[1 1 1]
[1 1 1]
[1 1 1]]
f = [1 2 3]
h = [1 2 3]
k = [b'W' b'h' b'a' b't' b' ' b'i' b's' b' ' b'P' b'y' b't' b'h' b'o' b'n']
l = [ 1  4  7 10 13 16 19]
m = [ 1.    5.75 10.5  15.25 20.  ]

2)数组操作和数组运算

NumPy 库中包含了一些函数用于处理数组或进行数组运算,如修改数组形状、连接数组、分割数组、数组元素的添加和删除、数组的算术运算、数组的排序和筛选等,示例代码如下。
import numpy as np

# 将一维数组a转换为5*2的二维数组b
a = np.arange(10)
print("a =", a)
b = a.reshape(5, 2)
print("b =", b)

# 将3*4的二维数组c转换为4*3的二维数组d,即数组转置
c = np.arange(12).reshape(3, 4)
print("c =", c)
d = np.transpose(c)
print("d =", d)

# 将1*3的二维数组e广播到3*3的二维数组f
e = np.arange(3).reshape(1, 3)
print("e =", e)
f = np.broadcast_to(e, (3, 3))
print("f =", f)

# 将2*3的二维数组g扩充为1*2*3和2*1*3的三维数组
g = np.array([[1, 2, 3], [4, 5, 6]])
h = np.expand_dims(g, axis=0)
i = np.expand_dims(g, axis=1)
print("h =", h)
print("i =", i)

# 将两个2*2的二维数组连接成一个4*2的二维数组
j = np.array([[1, 2], [3, 4]])
k = np.array([[5, 6], [7, 8]])
l = np.concatenate((j, k), axis=0)
print("l =", l)

# 使用append将2*3的二维数组g扩展为3*3的二维数组
m = np.append(g, [[7, 8, 9]], axis=0)
print("m =", m)
上述程序的运行结果为:

a = [0 1 2 3 4 5 6 7 8 9]
b = [[0 1]
[2 3]
[4 5]
[6 7]
[8 9]]
c = [[ 0  1  2  3]
[ 4  5  6  7]
[ 8  9 10 11]]
d = [[ 0  4  8]
[ 1  5  9]
[ 2  6 10]
[ 3  7 11]]
e = [[0 1 2]]
f = [[0 1 2]
[0 1 2]
[0 1 2]]
h = [[[1 2 3]]

[[4 5 6]]]
i = [[[1 2 3]]

[[4 5 6]]]
l = [[1 2]
[3 4]
[5 6]
[7 8]]
m = [[1 2 3]
[4 5 6]
[7 8 9]]


下面是数组元素运算、字符串操作及算术运算示例代码。
import numpy as np

# 对数组中的元素进行与、或、非和左移、右移运算
a = 8
b = 5
c = np.bitwise_and(a, b)
print("c =", c)

d = np.bitwise_or(a, b)
print("d =", d)

e = np.invert(a)
print("e =", e)

f = np.left_shift(a, 1)
g = np.right_shift(a, 1)
print("f =", f)
print("g =", g)

# 对数组中的字符串进行相应操作
print(np.char.add(['Python1'], ['Python2']))
print(np.char.multiply('Python', 3))
print(np.char.capitalize('python'))
print(np.char.title('what is python'))
print(np.char.lower('PYTHON'))
print(np.char.upper('what is Python'))

#数组的算术运算
h=np.array([[1,2,3],[4,5,6],[7,8,9]])
i=np.array([2,2,2])
print(np.add(h.i))
print(np.subtract(h,i))
print(np.multiply(h,i))
print(np.divide(h,i))
上述程序运行结果如下:

c = 0
d = 13
e = -9
f = 16
g = 4
['Python1Python2']
PythonPythonPython
Python
What Is Python
python
PYTHON
[[ 3  4  5]
[ 6  7  8]
[ 9 10 11]]
[[-1  0  1]
[ 2  3  4]
[ 5  6  7]]
[[ 2  4  6]
[ 8 10 12]
[14 16 18]]
[[0.5 1.  1.5]
[2.  2.5 3. ]
[3.5 4.  4.5]]

推荐阅读