假設我有以下陣列:
import numpy as np
x = np.array([1,2,3,4,5,
1,2,3,4,5,
1,2,3,4,5])
我如何操縱它以等間距洗掉該術語并為其調整新長度?例如,我想要:
x = [1,2,3,4,
1,2,3,4,
1,2,3,4]
位置 4、9 和 14 中的術語被排除在外(因此每 5 個術語,一個被排除)。如果可能的話,我想要一個可以用于長度為 N 的陣列的代碼。提前謝謝你!
uj5u.com熱心網友回復:
在您的情況下,您可以在初始化x陣列后簡單地運行下面的代碼(就像您提出問題一樣):
x.reshape(3,5)[:,:4]
輸出
array([[1, 2, 3, 4],
[1, 2, 3, 4],
[1, 2, 3, 4]])
如果您對獲取向量而不是矩陣感興趣(例如上面的輸出),可以flatten在上面的代碼中呼叫該函式:
x.reshape(3,5)[:,:4].flatten()
輸出
array([1, 2, 3, 4,
1, 2, 3, 4,
1, 2, 3, 4])
解釋
由于x是一個 numpy 陣列,我們可以使用 NumPy 內置函式,例如reshape. 此函式具有不言自明的名稱,可將陣列整形為所需的格式。x是 15 個元素的向量。因此,運行x.reshape(3,5)給了我們一個 3 行 5 列的矩陣。[:, :4]是重新選擇前四列。flatten函式將矩陣變為向量。
uj5u.com熱心網友回復:
IIUC,您可以使用通過模 (%) 運算子生成的布爾掩碼:
N = 5
mask = np.arange(len(x))%N != N-1
x[mask]
輸出:array([1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4])
即使您的陣列的大小不是 N 的倍數,這也有效
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/440677.html
