我有一個形狀為 的 3D 陣列(9, 100, 7200)。我想洗掉每一行中 7200 個值的第二部分,這樣新形狀將是(9, 100, 3600).
我該怎么做才能對陣列進行切片或洗掉索引的第二部分?我在想np.delete(arr, [3601:7200], axis=2),但是在使用冒號時出現無效的語法錯誤。
uj5u.com熱心網友回復:
為什么不直接切片?
arr = arr[:,:,:3600]
uj5u.com熱心網友回復:
出現語法錯誤是因為[3601:7200]python 無效。我假設您正在嘗試創建一個新的數字陣列作為obj洗掉函式的引數傳遞。你可以使用類似 range 函式的方法來做到這一點:
np.delete(arr, range(3600,7200), axis=2)
請記住,這不會修改arr,但會回傳一個洗掉元素的新陣列。另外,請注意我使用的是 3600 而不是 3601。
但是,在這樣的問題中使用切片通常是更好的做法:
arr[:,:,:3600]
這給出了您所需的形狀。讓我稍微分解一下。我們正在切片一個 3 維的 numpy 陣列。只是把一個冒號放進去意味著我們正在考慮那個維度的一切。:3600意味著我們正在獲取該維度中的前 3600 個元素。考慮洗掉最后一個的更好方法是將其視為保留前半部分。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/338387.html
上一篇:Python-序列維度問題
