title: Numpy ‘smart’ symmetric matrix
body: <p>Is there a smart and space-efficient symmetric matrix in numpy which automatically (and transparently) fills the position at <code>[j][i]</code> when <code>[i][j]</code> is written to?</p>
  
  <pre><code>import numpy
  a = numpy.symmetric((3, 3))
  a[0][1] = 1
  a[1][0] == a[0][1]
  # True
  print(a)
  # [[0 1 0], [1 0 0], [0 0 0]]
  
  assert numpy.all(a == a.T) # for any symmetric matrix
  </code></pre>
  
  <p>An automatic Hermitian would also be nice, although I won’t need that at the time of writing.</p>