翻转或反转 numpy 数组中的列

was*_*tor 5 python arrays numpy

我想翻转数组中数组的第一个和第二个值。一个简单的解决方案是遍历数组。这样做的正确方法是什么?

import numpy as np
contour = np.array([[1, 4],
                    [3, 2]])

flipped_contour = np.empty((0,2))
for point in contour:
    x_y_fipped = np.array([point[1], point[0]])
    flipped_contour = np.vstack((flipped_contour, x_y_fipped))

print(flipped_contour)

[[4. 1.]
[2. 3.]]
Run Code Online (Sandbox Code Playgroud)

cs9*_*s95 9

使用恰当的命名np.flip

np.flip(contour, axis=1)
Run Code Online (Sandbox Code Playgroud)

或者,

np.fliplr(contour)
Run Code Online (Sandbox Code Playgroud)

array([[4, 1],
       [2, 3]])
Run Code Online (Sandbox Code Playgroud)


jpp*_*jpp 7

您可以使用numpy 索引

contour[:, ::-1]
Run Code Online (Sandbox Code Playgroud)


duc*_*inh 5

除了COLDSPEED 的回答,如果我们只想交换第一列和第二列,而不是翻转整个数组:

contour[:, :2] = contour[:, 1::-1]
Run Code Online (Sandbox Code Playgroud)

contour[:, 1::-1]是由数组的前两列contour以相反顺序形成的数组。然后将其分配给前两列 ( contour[:, :2])。现在交换前两列。

通常,要交换ijth 列和第 th 列,请执行以下操作:

contour[:, [i, j]] = contour[:, [j, i]]
Run Code Online (Sandbox Code Playgroud)