What are the limits of vectorization?
For elementwise multiplication it does not matter, and flattening the array does not change a thing. Remember: Arrays, no matter their dimension, are saved linearly in RAM. If you flatten the array before multiplication, you are only changing the way NumPy presents the data to you, the data in RAM is never touched. Multiplying the 1D or the 100D data is exactly the same operation.
I'm working with multidimensional matrices (~100 dimensions or so, see below why). My matrix are NumPy arrays and I mainly multiply them with each other.
Does NumPy care (with respect to speed or accuracy) in what form I ask it to multiply these matrices? I.e. would it make sense to reshape them into a linear array before performing the multiplication? I did some own test with random matrices, and it seemed to be irrelevant, but would like to have some theoretical insight into this.
I guess there is a limit to how large matrices can be and how large they can be, before Python becomes slow handling them. Is there a way to find this limit?

I have several species (biology) and want to assign each of these species a fitness. Then I want to see how these different finesses affect the outcome of competition. And I want to check for all possible fitness combinations of all species. My matrices have many dimensions, but all dimensions are quite small.