title: Inconsistent type conversion in python/numpy when using scalars or lists/arrays
body: <p>I have a question about the strange way python/numpy performs type conversion. When I perform an arithmetic operation between a float32 and a float64 number, the lower precision is converted to float64 and then the operation is performed and the result will be in float64. But when a list or a numpy array consists of float32 numbers, this type conversion is performed in a reverse direction, i.e. this time it is the float64 number that is down converted to a float 32 number.</p>
  
  <pre><code>&gt;&gt; a = numpy.float32(10.0)
  &gt;&gt; b = numpy.float64(1.0)
  &gt;&gt; (a/b).dtype
     dtype('float64')
  &gt;&gt; (numpy.array([a])/b).dtype
     dtype('float32')
  &gt;&gt; (numpy.array([a])/b).dtype
     dtype('float32')
  </code></pre>
  
  <p>I think this different behaviour is inconsistent and can cause bugs in programs. This was a source of a bug in my code when I had an array of float32. See the different results in the following example:</p>
  
  <pre><code>&gt;&gt; a = numpy.float32(9.4247779)
  &gt;&gt; print a % numpy.pi  # note: numpy.pi is of type float64
     2.3849761277e-08
  &gt;&gt; aArr = numpy.array([a])
  &gt;&gt; print aArr % numpy.pi
     [ 3.1415925]
  </code></pre>
  
  <p>Can one tell me why python/Numpy does the type conversions differently? Is it something deliberately implemented? How one can force python/numpy to treat lists/numpy arrays the same that it treats numbers?</p>