如何使用numpy优化3D数组计算?

时间:2019-07-04 01:47:54

标签: python numpy optimization

我对3D阵列数据有回归问题。数组的大小为(350、350、50),我需要对每个像素进行回归处理;例如,对每个(1、1、50)数组进行回归,然后以350 x 350的重复次数进行重复。

我使用Numpy编写了代码,并且该代码正在每个过程中运行。

row, col, depth = image_sequence.shape 

for i in range(0, row):
    for j in range(0, col):
        Ytrain = image_sequence[i, j, :]
        new_stack[i,j,:] = regression_process(Ytrain)

'row'是350
“ col”是350

根据我的推断,每个序列的计算时间为5秒。 这意味着应将其计算为350x350序列,因此大约需要7天才能完成。

我想知道如何优化此过程并尽早完成。

我认为这与某些并行处理有关,但我不习惯。

1 个答案:

答案 0 :(得分:0)

numpy的方式是对gression_process进行编码,以使其将(n,50)的数组作为输入,其中n为任意数字。我举一个简单的例子,只计算平均值。

def regression_process(image): length = image.shape[1] new_stack = np.sum(image, axis=1) return new_stack / length

new_stack = regression_process(image_sequence.reshape(row*col, depth)) new_stack.reshape(row, col, depth)