this does work - albeit slowly. And it’s actually so slow as to be useless.
def copy_tensor(dst, src):
    for z in range(Z_MAX):
        for y in range(Y_MAX):
            for x in range(X_MAX):
                val = src[z][y][x]
                if val != 0:
                    dst[z][y][x] = 1

It appears that the only ndarray to tensor conversion that actually works is floating point.