NumPy库的安装和使用
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]]