You can use bpy.ops.view3d.view_pan()
to do the same as Ctrl+Numpad #, e.g.:
for area in bpy.context.screen.areas:
if area.type == 'VIEW_3D':
override = {'area': area, 'region': area.regions[-1]}
bpy.ops.view3d.view_pan(override, type='PANRIGHT')
The amount of the panning can't be controlled.
If you manipulate the view_matrix
(or view_location
etc.) directly, there's a lot more control. But you will have to calculate the proper matrices and vectors, and if something went wrong, you may end up with strange view or navigation reaction:
r3d = C.screen.areas[2].spaces[0].region_3d # region_3d of 3D View
r3d.view_matrix.col[3][1:4] # translation part of the view matrix
Have a look at the FPS Fly addon to see what can be done and how:
http://www.ewocprojects.be/fpsfly.html
AFAIK viewport navigation is a bit weird after use, as the addon might manipulate the wrong property to fly around. The C-implementation will be different.
bpy.ops.view3d.move
androtate
$\endgroup$bpy.ops.view3d.move
is not intended to be used from python. $\endgroup$