Q:

Can you label an array by variables or strings instead of integers?

Is there a way to label an array by a variable instead of an integer? For example calling the array I[i,j] with {i,j} = {x,y,z} instead of {i,j} = {1,2,3}?
For example, I might want to label the components of the Inertia tensor by I[x,x], I[x,y].. instead of I[1,1], I[1,2]..

A:

Maybe you just want something like this?
inertia = Array[\[CapitalIota] @@ {"x", "y", "z"}[[{##}]] &, {3, 3}];    
MatrixForm[inertia]

$$\left(
\begin{array}{ccc}
 I(\text{x},\text{x}) & I(\text{x},\text{y}) &
   I(\text{x},\text{z}) \\
 I(\text{y},\text{x}) & I(\text{y},\text{y}) &
   I(\text{y},\text{z}) \\
 I(\text{z},\text{x}) & I(\text{z},\text{y}) &
   I(\text{z},\text{z}) \\
\end{array}
\right)$$

Here I used the Greek I to avoid confusion with the complex I, and made the text labels appear as strings in a list {"x", "y", "z"} whose parts are selected based on the position in the 2D Array over integers from 1 to 3. This matrix inertia is now ready to be used for symbolic manipulations. 

