【发布时间】:2018-05-10 13:28:03
【问题描述】:
我写了一个代码来做不同范围的矩阵乘法,但是执行代码需要很多时间,
代码:
使用嵌套循环将两个矩阵相乘
import time
print("Enter the size of matrix A")
m = int(input())
n = int(input())
print("Enter the size of matrix A")
p = int(input())
q = int(input())
if(n==p):
print('enter matrix A')
else:
print("invalid entry")
exit()
our_list1 = []
A = []
i = 0
int(i)
for i in range(m):
for i in range(n):
number = int(input('Please enter a element '))
our_list1.append(number)
A.append(our_list1)
our_list1= []
print(A)
print('enter matrix B')
our_list1 = []
B = []
for i in range(p):
for i in range(q):
number = int(input('Please enter a element '))
our_list1.append(number)
B.append(our_list1)
our_list1= []
print(B)
start_time = time.time()
#
our_list1 = []
R = []
for i in range(m):
for i in range(q):
number = 0
our_list1.append(number)
R.append(our_list1)
our_list1= []
print(R)
for i in range(len(A)):
# iterating by coloum by B
for j in range(len(B[0])):
# iterating by rows of B
for k in range(len(B)):
R[i][j] += A[i][k] * B[k][j]
print(R)
print("--- %s seconds ---" % (time.time() - start_time))
这种矩阵乘法的执行时间比较长,如何才能选择有效的大维数范围矩阵乘法呢?所以高维数组可以顺利快速地执行。 示例输出:
Matrix A[[3, 3, 3], [3, 3, 3], [3, 3, 3]]
Matrix B[[3, 3, 3], [3, 3, 3], [3, 3, 3]]
[[0, 0, 0], [0, 0, 0], [0, 0, 0]]
[[27, 27, 27], [27, 27, 27], [27, 27, 27]]
--- 0.00014400482177734375 seconds ---
高维乘法需要 0.00014400482177734375 秒,我可以改进这个时间吗?
【问题讨论】:
-
只需使用专门的模块即可,即
numpy。 -
我不认为 0.0001 秒是“很多时间”,但如果你需要处理大矩阵,你应该使用 numpy
-
好吧,我以前没用过 numpy,能用它做高阶矩阵乘法吗?
-
可以的,这个模块就是为有效处理这类问题而设计的。
-
好的,我会用 nympy 并检查时差
标签: python python-3.x list numpy