NumPy学习12
今天学习了
22, NumPy矩阵乘法
23, NumPy IO操作
numpy_test12.py :
import numpy as np ''' 22, NumPy矩阵乘法 矩阵乘法是将两个矩阵作为输入值,并将 A 矩阵的行与 B 矩阵的列对应位置相乘再相加,从而生成一个新矩阵。 注意:必须确保第一个矩阵中的行数等于第二个矩阵中的列数,否则不能进行矩阵乘法运算。 矩阵乘法运算被称为向量化操作,向量化的主要目的是减少使用的 for 循环次数或者根本不使用。 这样做的目的是为了加速程序的计算。 ''' print("----22, NumPy矩阵乘法----") ''' (1) np.multiply() multiple() 函数用于两个矩阵的逐元素乘法. ''' print("----(1) np.multiply()----") arr1 = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]], ndmin=3) print('arr1 : ', arr1) arr2 = np.array([[9, 8, 7], [6, 5, 4], [3, 2, 1]], ndmin=3) print('arr2 : ', arr2) # 两个矩阵的逐元素乘法 result = np.multiply(arr1,arr2) print('result : ', result) ''' arr1 : [[[1 2 3] [4 5 6] [7 8 9]]] arr2 : [[[9 8 7] [6 5 4] [3 2 1]]] result : [[ [ 9 16 21] [24 25 24] [21 16 9]]] ''' ''' (2) np.matmul() matmul() 用于计算两个数组的矩阵乘积。 ''' print("----(2) np.matmul()----") arr3 = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]], ndmin=3) print('arr3 : ', arr3) arr4 = np.array([[9, 8, 7], [6, 5, 4], [3, 2, 1]], ndmin=3) print('arr4 : ', arr4) # 两个数组的矩阵乘积 result = np.matmul(arr3,arr4) print('result : ', result) ''' arr3 : [[[1 2 3] [4 5 6] [7 8 9]]] arr4 : [[[9 8 7] [6 5 4] [3 2 1]]] result : [[ [ 30 24 18] [ 84 69 54] [138 114 90]]] ''' ''' (3) np.dot() dot() 函数用于计算两个矩阵的点积。 ''' print("----(3) np.dot()----") arr5 = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9],], ndmin=3) print('arr5 : ', arr5) arr6 = np.array([[9, 8, 7], [6, 5, 4], [3, 2, 1]], ndmin=3) print('arr6 : ', arr6) # 两个矩阵的点积 result = np.dot(arr5, arr6) print('result : ', result) ''' arr5 : [[[1 2 3] [4 5 6] [7 8 9]]] arr6 : [[[9 8 7] [6 5 4] [3 2 1]]] result : [[ [[ 30 24 18]] [[ 84 69 54]] [[138 114 90]] ]] ''' ''' 23, NumPy IO操作 NumPy IO 操作是以文件的形式从磁盘中加载 ndarray 对象。 在这个过程中,NumPy 可以两种文件类型处理 ndarray 对象,一类是二进制文件(以.npy结尾),另一类是普通文本文件。 上述两种文件格式,分别对应着不同的 IO 方法,如下所示: NumPy IO操作方法 文件类型 处理方法 二进制文件 load() 和 save() 普通文本文件 loadtxt() 和 savetxt() 我们知道,文件会被保存在不同的计算机上(比如 Linux、Windows、MacOSX 等)。 为了不受的计算机架构影响,NumPy 开发团队给 ndarray 对象引入了一种.npy文件格式, 通过它来件实现对 ndarray 对象的保存。 ''' print("----23, NumPy IO操作----") ''' (1) numpy.save() numpy.save() 方法将输入数组存储在.npy文件中。 numpy.save(file, arr, allow_pickle=True, fix_imports=True) 参数说明: file:保存后的文件名称,其文件类型为.npy; arr:要保存的数组 allow_pickle:可选项,布尔值参数,允许使用 pickle 序列化保存数组对象。 fix_imports:可选项,为了便于在 Pyhton2 版本中读取 Python3 保存的数据。 ''' print("----(1) numpy.save()----") arr7 = np.array([1, 2, 3, 4, 5]) print('arr7 : ', arr7) # 输入数组存储在.npy文件中 np.save('outfile', arr7) print('输入数组存储在outfile.npy文件中') # 使用 load() 从 outfile.npy 文件中加载数据 arr8 = np.load('outfile.npy') print('从 outfile.npy 文件中加载数据') print('arr8 : ', arr8) ''' arr7 : [1 2 3 4 5] 输入数组存储在outfile.npy文件中 从 outfile.npy 文件中加载数据 arr8 : [1 2 3 4 5] ''' ''' (2) savetxt() savetxt() 和 loadtxt() 分别表示以文本格式存储数据或加载数据。其中 savetxt() 的语法格式如下: np.savetxt('filename文件路径', self.task, fmt="%d", delimiter=" ") 参数说明: filename:表示保存文件的路径; self.task: 要保存数组的变量名; fmt="%d": 指定保存文件的格式,默认是十进制; delimiter=" "表示分隔符,默认以空格的形式隔开。 ''' print("----(2) savetxt()----") arr9 = np.array([1,2,3,4,5]) print('arr9 : ', arr9) np.savetxt('outfile.txt', arr9) print('输入数组存储在outfile.txt 文本文件中') #使用loadtxt重载数据 arr10 = np.loadtxt('outfile.txt') print('从 outfile.txt 文本文件中加载数据') print('arr10 : ', arr10) ''' arr9 : [1 2 3 4 5] 输入数组存储在outfile.txt 文本文件中 从 outfile.txt 文本文件中加载数据 arr10 : [1. 2. 3. 4. 5.] '''