处理大文件的第三轴切片时,Numpy太慢了

时间:2017-02-17 00:27:30

标签: performance numpy indexing large-files

我正在使用大型文件(大于8gb)的8位3D显微断层图数据,我需要在用户通过滚动条调用的不同轴上绘制此图像的切片,因此我将使用matplotlib。但是当我尝试访问第三轴时,numpy变得非常慢。有没有其他方法可以更有效地做到这一点?

这是访问数据切片的代码以及获取每个轴的最大值的时间:

import numpy as np
import timeit

image1 = 'tomo-2048x2048x2048_8bit.b'

fd = open(image1, 'rb')
width = 2048
height = 2048
slices = 2048
img = np.memmap(image1, dtype=np.uint8, shape=(slices, width, height))
fd.close()

valinit = 1024
s = []
for i in xrange(3):
    s.append([slice(valinit-1, valinit, None) if j == i else slice(None) for j in xrange(3)])

for i in xrange(3):
    start = timeit.default_timer()
    print(img[s[i]].squeeze().max())
    stop = timeit.default_timer()
    print("Run time: %f") %(stop - start)

输出:

202
Run time: 0.014847
255
Run time: 0.026879
255
Run time: 92.322633

0 个答案:

没有答案