在NumPy中并行化伪逆计算

时间:2020-05-19 13:14:21

标签: python numpy parallel-processing python-xarray

是否有一种方法可以在3D矩阵的两个维度上并行进行矩阵运算的计算……? 例如,我想在sig的每个G级别上计算(3x2)矩阵的伪逆,以便所得矩阵将是(2x3x5),其中不包括sig维度在计算逆数时;反之仅适用于每个row级别的colsig维度。

理想情况下,我想通过以下类似方式实现此目标:

G = xr.DataArray(np.random.rand(3,2,5), dims=['row','col','sig'])

pinvG = xr.apply_ufunc(np.linalg.pinv, G.chunk({'sig':1}),  
                        output_core_dims=[['j','i']], 
#                         input_core_dims=[['sig'],['sig']],
#                         exclude_dims={'sig','sig'},
                        dask='parallelized', 
                        output_dtypes=[float], output_sizes={'j':2,'i':3}).compute()

1 个答案:

答案 0 :(得分:0)

我可以使用dask.array.map_blocks做我想做的事:

pinvG = dsar.map_blocks(np.linalg.pinv,G.transpose('sig','row','col').chunk({'sig':1}).data)