NumPy学习12

今天学习了
22, NumPy矩阵乘法
23, NumPy IO操作
numpy_test12.py :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
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.]
'''

  



posted @   PandaCode辉  阅读(15)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
点击右上角即可分享
微信分享提示