In Python 3, how to swap two sub-arrays in a 2-dimensional numpy array?
<p>Suppose there is an 2-dimensional numpy array (or matrix in maths) named "A", I want to swap its 1st row with another row "n". n is can be any natural number. The following codes do not work</p>

<pre><code>A = np.eye(3)
n = 2
A[0], A[n] = A[n], A[0]
print(A)
</code></pre>

<p>you can see it gives (I show the matrix form A for simplicity)</p>

<pre><code>A = 
   0, 0, 1
   0, 1, 0
   0, 0, 1
</code></pre>

<p>But what I want is</p>

<pre><code>A =
   0, 0, 1
   0, 1, 0
   1, 0, 0
</code></pre>

<p>I thought about one solution is introducing another matrix "B" which is equal to "A", but "A" and "B" are different objects. Then do this</p>

<pre><code>A = np.eye(3)
B = np.eye(3)
A[0], A[n] = B[n], B[0]
</code></pre>

<p>This can give the correct swap on A. But it needs an additional matrix "B", I don't know if it is computational efficient. Or maybe you have better idea? Thanks :)</p>

<p>Try this:</p>

<pre><code>import numpy as np

A = np.eye(3)
A[[0, 2]] = A[[2, 0]]
print(A)
</code></pre>

python arrays numpy matrix