【发布时间】:2019-06-26 13:47:52
【问题描述】:
由于我找不到有关此主题的任何信息,因此我决定在这里提出这个问题。我完全是初学者,这个问题可能很荒谬。
假设我们有A(NxN) 矩阵和一个列向量 (B(Nx1))。我们还有一个函数f(i,j),它返回矩阵A 在行i 和列j 的元素。
如果我们想做一些矩阵运算,比如A 和B 的矩阵乘积,我们可以使用:以下(下面,C 是矩阵乘积的结果):
- 使用函数
f(i,j):
N = 100000
def f(i, j):
return i + j
for i in range(N):
for j in range(N):
s = 0
for k in range(N):
s += f(i, k) * B[k]
C[i] = s
- 使用矩阵 A (
NxN)(假设 A 已经定义并且包含函数f返回的相同元素)
N = 100000
for i in range(N):
for j in range(N):
s = 0
for k in range(N):
s += A[i,k]*B[k]
C[i] = s
在我看来,该函数的优点是它避免了存储矩阵的所有值,从而节省了内存。
我的问题是:
在这种情况下,最有效的矩阵乘法方法是(使用函数还是矩阵本身)?
这两种方法在性能上有区别吗?
编辑:我的问题并非特定于 Python 或任何其他特定语言。
【问题讨论】:
-
找出它们的最佳方法是对它们进行计时并监控内存使用情况。我怀疑函数(搜索生成器 python)方法会更快,因为您不必存储或设置矩阵
标签: performance function matrix