Kronecker products can be used to efficiently and easily create 2D and 3D finite difference (and other) operators based on simple 1D operators for derivatives. Here’s a Jupyter notebook that shows you how to do this. You can find this notebook on nbviewer here.