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

标签 python arrays numpy matrix

假设有一个名为“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.]]

关于python - 在 Python 3 中,如何交换二维 numpy 数组中的两个子数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39169268/

相关文章:

python - 由于文件时间戳,尝试编译 Python 失败

python - 当用户输入数字时确定丰富数字

python - 使用分隔符将文件中的多行存储到变量

java - 如何从Java中私有(private)的另一个类访问数组?

python - 将列表列表转换为数据框中的一列数组

javascript - 在 jquery datepicker 中启用一个特定日期

JavaScript - 迭代数组以检查条件

python - 如何有效地扩展 numpy 中的分解张量?

numpy - 查询SVM参数设置

python - 在创建数组时对奇怪的 NumPy 错误感到困惑