<div dir="ltr">You will need to convert <span style="color:rgb(33,33,33)">"a[(2,3,5),][mask]" into a single indexing expression, e.g, by using utility functions like np.nonzero() on mask. NumPy can't support assignment in chained indexing.</span></div><br><div class="gmail_quote"><div dir="ltr">On Tue, Jun 19, 2018 at 1:25 PM Emil Sidky <<a href="mailto:sidky@uchicago.edu">sidky@uchicago.edu</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hello,<br>
The following is an example where an array element assignment didn't work<br>
as I expected.<br>
Create a 6 x 3 matrix:<br>
<br>
In [70]: a =  randn(6,3)<br>
<br>
In [71]: a<br>
Out[71]:<br>
array([[ 1.73266816,  0.948849  ,  0.69188222],<br>
        [-0.61840161, -0.03449826,  0.15032552],<br>
        [ 0.4963306 ,  0.77028209, -0.63076396],<br>
        [-1.92273602, -1.03146536,  0.27744612],<br>
        [ 0.70736325,  1.54687964, -0.75573888],<br>
        [ 0.16316043, -0.34814532,  0.3683143 ]])<br>
<br>
Create a 3x3 boolean array:<br>
In [72]: mask = randn(3,3)>0.<br>
<br>
In [73]: mask<br>
Out[73]:<br>
array([[ True,  True,  True],<br>
        [False,  True,  True],<br>
        [ True, False,  True]], dtype=bool)<br>
<br>
Try to modify elements of "a" with the following line:<br>
In [74]: a[(2,3,5),][mask] = 1.<br>
No elements are changed in "a":<br>
In [75]: a<br>
Out[75]:<br>
array([[ 1.73266816,  0.948849  ,  0.69188222],<br>
        [-0.61840161, -0.03449826,  0.15032552],<br>
        [ 0.4963306 ,  0.77028209, -0.63076396],<br>
        [-1.92273602, -1.03146536,  0.27744612],<br>
        [ 0.70736325,  1.54687964, -0.75573888],<br>
        [ 0.16316043, -0.34814532,  0.3683143 ]])<br>
<br>
Instead try to modify elements of "a" with this line:<br>
In [76]: a[::2,][mask] = 1.<br>
<br>
This time it works:<br>
In [77]: a<br>
Out[77]:<br>
array([[ 1.        ,  1.        ,  1.        ],<br>
        [-0.61840161, -0.03449826,  0.15032552],<br>
        [ 0.4963306 ,  1.        ,  1.        ],<br>
        [-1.92273602, -1.03146536,  0.27744612],<br>
        [ 1.        ,  1.54687964,  1.        ],<br>
        [ 0.16316043, -0.34814532,  0.3683143 ]])<br>
<br>
<br>
Is there a way where I can modify the elements of "a" selected by an <br>
expression like "a[(2,3,5),][mask]" ?<br>
<br>
Thanks , Emil<br>
_______________________________________________<br>
NumPy-Discussion mailing list<br>
<a href="mailto:NumPy-Discussion@python.org" target="_blank">NumPy-Discussion@python.org</a><br>
<a href="https://mail.python.org/mailman/listinfo/numpy-discussion" rel="noreferrer" target="_blank">https://mail.python.org/mailman/listinfo/numpy-discussion</a><br>
</blockquote></div>