gpt4 book ai didi

python - 在 Numpy 中交换行会产生一个嵌入式数组

转载 作者:行者123 更新时间:2023-12-03 18:36:08 25 4
gpt4 key购买 nike

我正在尝试使用以下数组交换 np.array A 的行:

A = np.array([[0,-3,-6,4,9],
[-1,-2,-1,3,1],
[-2,-3,0,3,-1],
[1,4,5,-9,-7]])

当我使用下面的代码时:

A = np.array([A[3],A[0],A[1],A[2]])

我的数组变成了

array([[ 1,  4,  5, -9, -7],
[ 0, -3, -6, 4, 9],
[-1, -2, -1, 3, 1],
[-2, -3, 0, 3, -1]])

就像我希望的、希望的和梦想的那样。但是,当我尝试更宽的切片时(因为我需要更大的矩阵),它的效果不太好:

A = np.array([A[3], A[0:3]])
A

array([array([-2, -3, 0, 3, -1]),
array([[ 1, 4, 5, -9, -7],
[ 0, -3, -6, 4, 9],
[-1, -2, -1, 3, 1]])], dtype=object)

为什么会这样/我怎样才能正确执行这个切片?

最佳答案

第一个表达式可以更简单地写成

A = A[[3, 0, 1, 2], :])

第二个因此可以写成

A = A[[3, *range(3)], :]

这比使用 roll 更通用,因为您可以使用类似的东西移动任意行

A = A[[1, *range(1), *range(2, 4)], :]

关于python - 在 Numpy 中交换行会产生一个嵌入式数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59269531/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com