Number of dimensions is the same as the depth to which lists are nested. Your example is 2d because it is a list of lists. Adding a third list doesn't change the dimension. What would make it 3d would be if it was a list of lists of lists.
If you print that array, you'll see it displayed as a 2d grid, where each of the lists is a row, and each list index is a column. It gets harder to imagine as you go to higher dimensions, but a 3d grid could be rendered as a cube, and then 4d and beyond is too difficult to imagine.
--Edit--
As pointed out, an array is not the same as nested lists. They are functionally very different. But the original question was about conceptualizing multidimensional arrays.
import numpy as np
array = np.arange(27)
print(array)
array = array.reshape(3, 9)
print(array)
array = array.reshape(3, 3, 3)
print(array)
If you run this script, you can see the same information displayed as a 1d, 2d, and 3d array.
# 1D
[ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26]
# 2D
[[ 0 1 2 3 4 5 6 7 8]
[ 9 10 11 12 13 14 15 16 17]
[18 19 20 21 22 23 24 25 26]]
# 3D
[[[ 0 1 2]
[ 3 4 5]
[ 6 7 8]]
[[ 9 10 11]
[12 13 14]
[15 16 17]]
[[18 19 20]
[21 22 23]
[24 25 26]]]
The 1d array is akin to a number line. The 2d array is like a grid. The 3d array could represent each of the cells in a 3x3x3 cube. For learning how to operate on an array, this isn't particularly useful. But for being able to conceptually grasp the structure of an N-dimensional array, it's helpful to me.