【发布时间】:2019-06-01 01:59:03
【问题描述】:
有没有更快的方法来执行此操作?
尺寸是:
proj: 400 x 400bigproj: 30k x 30ktotalproj: 30k x 30k
ds1 和 ds2(每个形状:6k x 400)是从较大矩阵(DS1 和 DS2)中提取的矩阵,其中每个的形状为 6k x 30k。 proj 是在 ds1 和 ds2 上执行的某些功能的结果。 origindex 是 DS1 或 DS2 的列索引
ds1 = DS1[:,origindex]
ds2 = DS2[:,origindex]
proj = somefunction(ds1,ds2)
for m, n in product(range(proj.shape[0]), range(proj.shape[1])):
bigproj[origindex[m], origindex[n]] = proj[m, n]
totalproj += bigproj
似乎添加矩阵的最后一行花费的时间最长。
如果需要更多信息,请告诉我。
【问题讨论】:
-
您的意思是对循环的每次 迭代执行full 矩阵
bigproj的求和吗?这会通过proj累积先前设置的值。还是您的意思是改用totalproj[origindex[m], origindex[n]] += bigproj[origindex[m], origindex[n]]?
标签: python python-2.7 numpy for-loop matrix