[NumPy-Tickets] [NumPy] #2227: Array created with broadcast_array does not support indexing

NumPy Trac numpy-tickets@scipy....
Mon Oct 15 14:53:39 CDT 2012


#2227: Array created with broadcast_array does not support indexing
------------------------+---------------------------------------------------
 Reporter:  timcera     |       Owner:  somebody   
     Type:  defect      |      Status:  new        
 Priority:  normal      |   Milestone:  Unscheduled
Component:  numpy.core  |     Version:  1.6.2      
 Keywords:              |  
------------------------+---------------------------------------------------
 {{{
 >>> np.__version__
 '1.8.0.dev-d569ebc'

 >>> x = 2

 >>> skew = [0, 0.1, 0.2]

 >>> ans, x, skew = np.broadcast_arrays([1.0], x, skew)

 >>> ans
 array([ 1.,  1.,  1.])

 >>> mask = np.absolute(skew) < 0.001

 >>> mask
 array([ True, False, False], dtype=bool)

 >>> ans[mask] = 5.1

 >>> ans
 array([ 5.1,  5.1,  5.1])
 }}}


 The ans variable should be array([ 5.1,  1.0,  1.0])

 Doesn't work with integer indexes either...


 {{{
 >>> ans[2] = 9.3

 >>> ans
 array([ 9.3,  9.3,  9.3])

 }}}

 Should be array([ 1.0,  1.0,  9.3])


 {{{
 >>> goodans = np.ones(3.0)

 >>> goodans
 array([ 1.,  1.,  1.])

 >>> goodans[mask] = 5.4

 >>> goodans
 array([ 5.4,  1.0,  1.0])
 }}}


 If you deep copy the 'ans' indexing works again...


 {{{
 >>> copyans = ans.copy()

 >>> copyans[0] = 6.7

 >>> copyans
 array([ 6.7,  1. ,  1. ])
 }}}


 Noticed that there were differences in .base and .strides between the
 broadcast_arrays and the copied arrays/np.ones created arrays.

-- 
Ticket URL: <http://projects.scipy.org/numpy/ticket/2227>
NumPy <http://projects.scipy.org/numpy>
My example project


More information about the NumPy-Tickets mailing list