從 NumPy 中的陣列中刪除元素
Vaibhav Vaibhav
2023年10月10日
在本文中,我們將學習從 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 陣列,其中包含實際元素,但沒有索引。
要了解有關此函式的更多資訊,請參閱此函式的官方文件。
作者: Vaibhav Vaibhav