A numpy array has a fixed, 'rectangular' shape, and dtype. It that isn't clear you need to reread the basic documentation.
np.array(...) tries to make a multidimensional array from the inputs. The classic case is
np.array([ [1,2], [3,4] ])
which makes a 2d array from the list of lists.
But if the inputs differ in size it can't do that. The fall back is to make an object dtype array, and fill it with pointers to those inputs. That's what's happening in your first case. Look at its dtype and shape.
In the second case you create an array with 10 floats. You get the error when you try to put a multidimensional image object into one of those float slots.
In [173]: np.array([ [1,2],[3,4] ])
Out[173]:
array([[1, 2],
[3, 4]])
In [174]: np.array([ [1,2],[3,4,5] ])
Out[174]: array([list([1, 2]), list([3, 4, 5])], dtype=object)
You could start with an object dtype array, and fill it with all kinds of objects:
In [175]: x = np.empty(3, object)
In [176]: x
Out[176]: array([None, None, None], dtype=object)
In [177]: x[0] = [1,2,3]
In [178]: x[1] = {1:2, 3:4}
In [180]: x[2] = np.arange(3)
In [181]: x
Out[181]: array([list([1, 2, 3]), {1: 2, 3: 4}, array([0, 1, 2])], dtype=object)
But beware that such an array is more like a list than the regular number n-d array.
In [182]: x.tolist()
Out[182]: [[1, 2, 3], {1: 2, 3: 4}, array([0, 1, 2])]
print(img.shape)?tableau.append()youre treating the array like a dict instead of an array