[英]Flip or reverse columns in numpy array
我想翻轉數組中 arrays 的第一個和第二個值。 一個天真的解決方案是遍歷數組。 這樣做的正確方法是什么?
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.]]
使用恰當命名的np.flip
:
np.flip(contour, axis=1)
要么,
np.fliplr(contour)
array([[4, 1],
[2, 3]])
您可以使用numpy
索引 :
contour[:, ::-1]
除了COLDSPEED的答案外 ,如果我們只想只交換第一列和第二列,而不是翻轉整個數組:
contour[:, :2] = contour[:, 1::-1]
這里的contour[:, 1::-1]
是由數組contour
的前兩列以相反的順序形成的數組。 然后將其分配給前兩列( contour[:, :2]
)。 現在,前兩列已交換。
通常,要交換第i
和第j
列,請執行以下操作:
contour[:, [i, j]] = contour[:, [j, i]]
這是交換前兩列的兩種非就地方式:
>>> a = np.arange(15).reshape(3, 5)
>>> a[:, np.r_[1:-1:-1, 2:5]]
array([[ 1, 0, 2, 3, 4],
[ 6, 5, 7, 8, 9],
[11, 10, 12, 13, 14]])
要么
>>> np.c_[a[:, 1::-1], a[:, 2:]]
array([[ 1, 0, 2, 3, 4],
[ 6, 5, 7, 8, 9],
[11, 10, 12, 13, 14]])
>>> your_array[indices_to_flip] = np.flip(your_array[indices_to_flip], axis=1)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.