是否有一种方法可以在3D矩阵的两个维度上并行进行矩阵运算的计算……?
例如,我想在sig
的每个G
级别上计算(3x2)矩阵的伪逆,以便所得矩阵将是(2x3x5),其中不包括sig
维度在计算逆数时;反之仅适用于每个row
级别的col
和sig
维度。
理想情况下,我想通过以下类似方式实现此目标:
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()
答案 0 :(得分:0)
我可以使用dask.array.map_blocks
做我想做的事:
pinvG = dsar.map_blocks(np.linalg.pinv,G.transpose('sig','row','col').chunk({'sig':1}).data)