修改陣列項目
NumPy 提供了不少修改多維陣列項目的方法,這篇教學將會介紹 NumPy 裡添加、刪除、修改陣列項目的基本方法。
本篇使用的 Python 版本為 3.7.12,所有範例可使用 Google Colab 實作,不用安裝任何軟體 ( 參考:使用 Google Colab )
修改陣列項目的方法
NumPy 有下列幾種修改陣列項目的方法:
方法 | 參數 | 說明 |
---|---|---|
numpy.resize() | arr, shape | 改變陣列尺寸大小。 |
numpy.append() | arr, item | 添加項目到陣列最後面,返回一個一維陣列。 |
numpy.insert() | arr, index, item | 添加項目到陣列指定的位置,返回一個一維陣列。 |
numpy.delete() | arr, index | 刪除某個項目,返回一個一維陣列。 |
numpy.unique() | arr | 取出不重複的項目,返回一個一維陣列。 |
numpy.resize()
numpy.resize() 會將原本的陣列調整為新的尺寸,運作原理是先把原本陣列的元素攤平,再依序放入新尺寸的陣列中,若新尺寸大於原本的項目數量,就依序重複放入,如果新尺寸小於原本的數量,就會捨棄超過的項目。
import numpy as np
a = np.array([[1,1,1],[2,2,2]])
b = np.resize(a, (3,2))
print(b)
'''
[[1 1]
[1 2]
[2 2]]
'''
c = np.resize(a, (5,5))
print(c)
'''
[[1 1 1 2 2]
[2 1 1 1 2]
[2 2 1 1 1]
[2 2 2 1 1]
[1 2 2 2 1]]
'''
d = np.resize(a, (2,2))
print(d)
'''
[[1 1]
[1 2]]
'''
numpy.append()
numpy.append() 會將項目添加到陣列最後面,並返回一個一維陣列,第一參數為 arr 原本的陣列,第二個參數為要加入的內容。
import numpy as np
a = np.array([[1,1,1],[2,2,2]])
b = np.append(a, 1)
c = np.append(a, [3,3,3])
print(b) # [1 1 1 2 2 2 1]
print(c) # [1 1 1 2 2 2 3 3 3]
如果加入的內容數量和原本的陣列相同,可以設定第三個參數 ( 預設 None ) 為 0 ( 行 ) 或 1 ( 列 ),指定資料插入的維度。
import numpy as np
a = np.array([[1,1,1],[2,2,2]])
b = np.append(a, [[3,3,3],[4,4,4]],1)
print(b)
'''
[[1 1 1 3 3 3]
[2 2 2 4 4 4]]
'''
c = np.append(a, [[3,3,3],[4,4,4]],0)
print(c)
'''
[[1 1 1]
[2 2 2]
[3 3 3]
[4 4 4]]
'''
numpy.insert()
numpy.insert() 會將項目添加到陣列指定的位置,並返回一個一維陣列,第一參數為 arr 原本的陣列,第二個參數為加入的位置,第三個參數是要加入的內容,如果設定第四個參數 ( 預設 None ) 為 0 ( 行 ) 或 1 ( 列 ),則可以指定資料插入的維度。
import numpy as np
a = np.array([[1,1],[2,2],[3,3]])
b = np.insert(a, 1, [4,4])
c = np.insert(a, 2, [4,4])
print(b) # [1 4 4 1 2 2 3 3]
print(c) # [1 1 4 4 2 2 3 3]
d = np.insert(a, 2, [4,4], 0)
print(d)
'''
[[1 1]
[2 2]
[4 4]
[3 3]]
'''
numpy.delete()
numpy.delete() 會將項目刪除陣列中指定位置的項目,並返回一個一維陣列,第一參數為 arr 原本的陣列,第二個參數為要刪除的項目位置,如果設定第三個參數 ( 預設 None ) 為 0 ( 行 ) 或 1 ( 列 ),則可以指定資料插入的維度。
import numpy as np
a = np.array([[1,2],[3,4],[5,6]])
b = np.delete(a, 1)
c = np.delete(a, 2)
print(b) # [1 3 4 5 6]
print(c) # [1 2 4 5 6]
d = np.delete(a, 2, 0)
print(d)
'''
[[1 2]
[3 4]]
'''
numpy.unique()
numpy.unique() 會取出不重複的項目,返回一個一維陣列,第一個參數 arr 為原本的陣列,另外還有三個預設為 False 的參數 。
參數 | 說明 |
---|---|
return_index | 如果為 True,返回取出的元素在原來列表中的位置。 |
eturn_inverse | 如果為 True,返回原本的元素在新列表中的位置。 |
return_counts | 如果為 True,返回取出的項目在原本列表中出現的次數。 |
import numpy as np
a = np.array([[1,1],[2,2],[3,3]])
b = np.unique(a)
c = np.unique(a, return_index=True)
d = np.unique(a, return_inverse=True)
e = np.unique(a, return_counts=True)
print(b) # [1 2 3]
print(c) # (array([1, 2, 3]), array([0, 2, 4]))
print(d) # (array([1, 2, 3]), array([0, 0, 1, 1, 2, 2]))
print(e) # (array([1, 2, 3]), array([2, 2, 2]))
意見回饋
如果有任何建議或問題,可傳送「意見表單」給我,謝謝~