從 NumPy 中的陣列中刪除元素
Vaibhav Vaibhav
2023年10月10日
NumPy
在本文中,我們將學習從 NumPy 陣列中刪除元素的兩種方法。
使用 numpy.delete() 函式刪除元素
請參考以下程式碼。
import numpy as np
myArray = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
indexes = [3, 5, 7]
modifiedArray = np.delete(myArray, indexes)
print(modifiedArray)
輸出:
[ 1 2 3 5 7 9 10]
在上面的程式碼中,我們使用了 NumPy 庫的 delete() 函式。delete() 函式接受三個引數,即 arr,obj 和 axis,並輸出一個 NumPy 陣列。arr 是我們希望從中刪除元素的 NumPy 陣列。obj 是整數列表。這些數字表示應從陣列中刪除的元素的索引。最後,axis 是一個可選引數。axis 指的是應刪除 obj 所針對的元素所沿的軸。如果為該引數分配了 None 值,則將 arr 展平,並對該展平的陣列進行刪除。
與往常一樣,如果為該方法提供的索引超出 arr 範圍,則會丟擲 IndexError 異常。
import numpy as np
myArray = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
indexes = [3, 5, 7, 34]
modifiedArray = np.delete(myArray, indexes)
print(modifiedArray)
輸出:
Traceback (most recent call last):
File "<string>", line 5, in <module>
File "<__array_function__ internals>", line 5, in delete
File "/path/to/library/numpy/lib/function_base.py", line 4480, in delete
keep[obj,] = False
IndexError: index 34 is out of bounds for axis 0 with size 10
要了解這個函式的更多資訊,請參閱此函式的官方文件
以下是在多維 NumPy 陣列中刪除的其他兩個示例。
import numpy as np
myArray = np.array([[1, 2, 3, 4, 5], [11, 12, 13, 14, 15], [21, 22, 23, 24, 25]])
modifiedArray = np.delete(myArray, [1, 2], 1)
print(modifiedArray)
輸出:
[[ 1 4 5]
[11 14 15]
[21 24 25]]
使用 None 作為引數 axis 的值。
import numpy as np
myArray = np.array([[1, 2, 3, 4, 5], [11, 12, 13, 14, 15], [21, 22, 23, 24, 25]])
modifiedArray = np.delete(myArray, [1, 2], None)
print(modifiedArray)
輸出:
[ 1 4 5 11 12 13 14 15 21 22 23 24 25]
使用 numpy.setdiff1d() 函式刪除元素
這次,我們將使用 NumPy 中的 setdiff1d() 函式。該函式接受三個引數,ar1、ar2 和 assume_unique。ar1 和 ar2 是兩個 NumPy 陣列。assume_unique 是一個可選的布林引數。其預設值為 False。當其為 True 時,則假定兩個輸入陣列是唯一的,並且此假設可以加快計算時間。
setdiff1d() 返回 ar1 中不在 ar2 中的唯一值。
請參考以下程式碼。
import numpy as np
myArray = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
indexes = [3, 5, 7]
modifiedArray = np.setdiff1d(myArray, indexes)
print(modifiedArray)
輸出:
[ 1 2 4 6 8 9 10]
與 numpy.delete() 不同,這兩個陣列都是 NumPy 陣列,其中包含實際元素,但沒有索引。
要了解有關此函式的更多資訊,請參閱此函式的官方文件。
Enjoying our tutorials? Subscribe to DelftStack on YouTube to support us in creating more high-quality video guides. Subscribe
作者: Vaibhav Vaibhav
