【发布时间】:2014-11-22 19:37:36
【问题描述】:
我有一个形状为 256x256 的矩阵,我试图找到一条最适合的线。顺便说一下,这是一张图像,所以这些只是强度值。假设我想通过所有强度找到最适合的线,我将如何去做? This 链接描述了如何使用 svd 在 3d 数据集上执行此操作。但是,我对如何将其应用于我的 numpy 数组感到有些困惑?
编辑:这是我用 %timeit 分析的双精度随机值的示例:
ran = [25,50,75,100,125]
for i in ran:
J = np.random.random((i,i))
y,x=np.indices(J.shape)
x = x.ravel()
y = y.ravel()
J=J.ravel()
data = np.concatenate((x[:, np.newaxis],
y[:, np.newaxis],
J[:, np.newaxis]),axis=1)
datamean = data.mean(axis=0)
print "Doing %d now" %i
%timeit U, S, V = np.linalg.svd(data - datamean)
我得到以下输出:
Doing 25 now
100 loops, best of 3: 10.4 ms per loop
Doing 50 now
1 loops, best of 3: 285 ms per loop
Doing 75 now
1 loops, best of 3: 3 s per loop
Doing 100 now
1 loops, best of 3: 5.83 s per loop
Doing 125 now
1 loops, best of 3: 15.1 s per loop
EDIT2:Here's my actual array。我只是用numpy的npy格式保存的
【问题讨论】:
标签: python arrays numpy matplotlib curve-fitting