Ok, you could use a flat array and index into it depending on the dimensions of the tensor (as is often done for matrices), but that's really just a way of saving ram or cpu cycles rather than a different representation.
float* x = malloc(width*height*channels*sizeof(float))
Is x an "Image"? Is x a "tensor"? Is x a "raster"?
For tensors specifically, if x is not itself the product of vector spaces, then it's not a tensor.
tl;dr: While every rank-N tensor can be represented with multidimensional arrays, not all multidimensional arrays are rank-N tensors.
I don't know much about tensors used in AI or in physics. But I do know quite a bit about mathematical constructs being used across different domains and very often the definition is subtly different, so you cannot make a statement about the definition of tensors in physics and assume it'll hold for tensors in AI.