Skip to main content
 首页 » 编程设计

python之在 Python 3 中,如何交换二维 numpy 数组中的两个子数组

2025年05月04日15bjzhanghao

假设有一个名为“A”的二维 numpy 数组(或数学矩阵),我想将其第一行与另一行“n”交换。 n 可以是任何自然数。以下代码不起作用

A = np.eye(3) 
n = 2 
A[0], A[n] = A[n], A[0] 
print(A) 

你可以看到它给出了(为了简单起见,我展示了矩阵形式 A)

A =  
   0, 0, 1 
   0, 1, 0 
   0, 0, 1 

但我想要的是

A = 
   0, 0, 1 
   0, 1, 0 
   1, 0, 0 

我想过一个解决方案是引入另一个等于“A”的矩阵“B”,但“A”和“B”是不同的对象。然后这样做

A = np.eye(3) 
B = np.eye(3) 
A[0], A[n] = B[n], B[0] 

这可以在 A 上给出正确的交换。但是它需要一个额外的矩阵“B”,我不知道它是否具有计算效率。或者也许你有更好的主意?谢谢:)

请您参考如下方法:

列表交换通过引用传递来交换变量。因此,通过传统的按值交换进行内部元素交换是行不通的,即 a,b=b,a

您可以在此处进行内部列表修改。一个接一个执行,消除了覆盖问题。

代码:

import numpy as np 
A = np.eye(3) 
n = 2 
A[[0,n]] = A[[n,0]] 
print(A) 

输出:

[[ 0.  0.  1.] 
 [ 0.  1.  0.] 
 [ 1.  0.  0.]]