python ndarray append_9-Python-NumPy数组元素的添加与删除
數組元素的添加與刪除 相關函數列表如下:
函數
元素及描述
resize
返回指定形狀的新數組
append
將值添加到數組末尾
insert
沿指定軸將值插入到指定下標之前
delete
刪掉某個軸的子數組,并返回刪除后的新數組
unique
查找數組內的唯一元素
1)
返回指定大小的新數組
numpy.resize(arr, shape)
arr:要修改大小的數組
shape:返回數組的新形狀
新數組小于原始數組
>>> import numpy as np
>>> a = np.array([[1,2,3],[4,5,6]])
>>> a
array([[1, 2, 3],
[4, 5, 6]])
>>> b = np.resize(a,(2,2))
>>> b
array([[1, 2],
[3, 4]])
新數組大于原始數組
>>> import numpy as np
>>> a = np.array([[1,2,3],[4,5,6]])
>>> a
array([[1, 2, 3],
[4, 5, 6]])
>>> c = np.resize(a,(3,3))
>>> c
array([[1, 2, 3],
[4, 5, 6],
[1, 2, 3]])
>>> d = np.resize(a,(3,4))
>>> d
array([[1, 2, 3, 4],
[5, 6, 1, 2],
[3, 4, 5, 6]])
總結:
如果新數組大小小于原始大小,會默認按行對原始數組進行取值,直到取夠為止
如果新數組大小大于原始大小,會默認按行重復使用原始數組中的元素,會包含原始數組中的元素的副本。
2)
在數組的末尾添加值。 追加操作會分配整個數組,并把原來的數組復制到新數組中。 此外,輸入數組的維度必須匹配否則將生成ValueError。
numpy.append(arr, values, axis=None)
arr:輸入數組
values:要向arr添加的值,需要和arr形狀相同(除了要添加的軸)
axis:默認為 None
當axis=None時,是橫向加成,對添加的元素的個數和類型無要求,返回總是為一維數組
當axis=0時,增加的是原始數組的行數,因此添加的列表必須是二維[[]]。若要添加一行,子列表元素個數是1[[]],添加二行,子列表元素個數是2[[],[]]。子列表元素個數要與原始數組的列數相同。
當axis=1時,增加的是原始數組的列數,因此添加的列表元素個數要與原始數組的行數相同,增加的列數取決于子列表的元素個數
不定義axis,返回的都是一維數組
>>> import numpy as np
>>> a = np.array([[1,2,3],[4,5,6]])
>>> a
array([[1, 2, 3],
[4, 5, 6]])
>>> np.append(a, [7,8])
array([1, 2, 3, 4, 5, 6, 7, 8])
>>> np.append(a, [7,8,9])
array([1, 2, 3, 4, 5, 6, 7, 8, 9])
''' 嘗試添加多維數組'''
>>> np.append(a, [[7,8],[9,]])
array([1, 2, 3, 4, 5, 6, list([7, 8]), list([9])], dtype=object)
定義axis=0
>>> import numpy as np
>>> a = np.array([[1,2,3],[4,5,6]])
>>> a
array([[1, 2, 3],
[4, 5, 6]])
'''沿軸 0 添加元素,即增加原始數組的行數'''
>>> np.append(a, [[7,8,9]],axis = 0)
array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
>>> np.append(a, [[7,8,9],[10,11,12]],axis = 0)
array([[ 1, 2, 3],
[ 4, 5, 6],
[ 7, 8, 9],
[10, 11, 12]])
定義axis=1
>>> import numpy as np
>>> a = np.array([[1,2,3],[4,5,6]])
>>> a
array([[1, 2, 3],
[4, 5, 6]])
'''沿軸 1 添加元素,即增加原始數組的列數'''
>>> np.append(a, [[7],[8]],axis = 1)
array([[1, 2, 3, 7],
[4, 5, 6, 8]])
>>> np.append(a, [[7,9],[8,10]],axis = 1)
array([[ 1, 2, 3, 7, 9],
[ 4, 5, 6, 8, 10]])
3)
用法和 numpy.append類似,但沒有append嚴格
numpy.insert(arr, obj, values, axis)
arr:輸入數組
obj:在其之前插入值的索引
values:要插入的值
axis:沿著它插入的軸,如果未提供,則輸入數組會被展開
不傳遞axis參數時,是橫向加成,添加對象是單個元素或者是一維數組(列表),可以是一個元素,也可以是一個列表(包含1個以上元素),返回總是為一維數組
當axis=0時,添加對象可以是1個元素或者數組,當為數組時,添加的數組維度可以是(1,1)或者和原始數組相等,但不能大或者不等
當axis=1時,添加對象可以是1個元素或者數組,當為數組時,添加數組的維度可以是(1,1),或者必須原始數組列數相同,但不能大或者不等
numpy.insert添加的對象可以是一個元素或者數組
未傳遞 axis 參數,生成的是一維數組
>>> import numpy as np
>>> a = np.array([[1,2],[3,4],[5,6]])
>>> a
array([[1, 2],
[3, 4],
[5, 6]])
>>> np.insert(a,3,11)
array([ 1, 2, 3, 11, 4, 5, 6])
>>> np.insert(a,3,[11,12])
array([ 1, 2, 3, 11, 12, 4, 5, 6])
>>> np.insert(a,3,[11,12,13])
array([ 1, 2, 3, 11, 12, 13, 4, 5, 6])
定義axis=0
>>> np.insert(a,1,11,axis = 0)
array([[ 1, 2],
[11, 11],
[ 3, 4],
[ 5, 6]])
>>> np.insert(a,1,[11],axis = 0)
array([[ 1, 2],
[11, 11],
[ 3, 4],
[ 5, 6]])
>>> np.insert(a,1,[11,12],axis = 0)
array([[ 1, 2],
[11, 12],
[ 3, 4],
[ 5, 6]])
>>> np.insert(a,1,[[11,12],[13,14]],axis = 0)
array([[ 1, 2],
[11, 12],
[13, 14],
[ 3, 4],
[ 5, 6]])
>>> np.insert(a,1,[11,12,13],axis = 0)
Traceback (most recent call last):
ValueError: could not broadcast input array from shape (1,3) into shape (1,2)
定義axis=1
>>> np.insert(a,1,11,axis = 1)
array([[ 1, 11, 2],
[ 3, 11, 4],
[ 5, 11, 6]])
>>> np.insert(a,1,[11],axis = 1)
array([[ 1, 11, 2],
[ 3, 11, 4],
[ 5, 11, 6]])
>>> np.insert(a,1,[11,12],axis = 1)
Traceback (most recent call last):
ValueError: could not broadcast input array from shape (2,1) into shape (3,1)
>>> np.insert(a,1,[11,12,13],axis = 1)
array([[ 1, 11, 2],
[ 3, 12, 4],
[ 5, 13, 6]])
>>> np.insert(a,1,[[11],[12],[13]],axis = 1)
array([[ 1, 11, 12, 13, 2],
[ 3, 11, 12, 13, 4],
[ 5, 11, 12, 13, 6]])
>>> np.insert(a,1,[[11,12,13],[14,15,16],[17,18,19]],axis = 1)
array([[ 1, 11, 14, 17, 2],
[ 3, 12, 15, 18, 4],
[ 5, 13, 16, 19, 6]])
4)
返回從輸入數組中刪除指定子數組的新數組。 與 insert() 函數的情況一樣,如果未提供軸參數,則輸入數組將展開。
Numpy.delete(arr, obj, axis)
arr:輸入數組
obj:可以被切片,整數或者整數數組,表明要從輸入數組刪除的子數組
axis:沿著它刪除給定子數組的軸,如果未提供,則輸入數組會被展開
未傳遞 Axis 參數,生成一個一維數組
>>> import numpy as np
>>> a = np.arange(12).reshape(3,4)
>>> a
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]])
>>> np.delete(a,5)
array([ 0, 1, 2, 3, 4, 6, 7, 8, 9, 10, 11])
定義axis=0,對行進行操作
>>> import numpy as np
>>> a = np.arange(12).reshape(3,4)
>>> np.delete(a,5)
array([ 0, 1, 2, 3, 4, 6, 7, 8, 9, 10, 11])
>>> a
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]])
''' 刪除第2行 '''
>>> np.delete(a,1,axis = 0)
array([[ 0, 1, 2, 3],
[ 8, 9, 10, 11]])
'''刪除第2行和第3行'''
>>> np.delete(a,[1,2],axis = 0)
array([[0, 1, 2, 3]])
定義axis=1,對列進行操作
>>> import numpy as np
>>> a = np.arange(12).reshape(3,4)
>>> np.delete(a,5)
array([ 0, 1, 2, 3, 4, 6, 7, 8, 9, 10, 11])
>>> a
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]])
''' 刪除第2列 '''
>>> np.delete(a,1,axis = 1)
array([[ 0, 2, 3],
[ 4, 6, 7],
[ 8, 10, 11]])
''' 刪除第2列和第3列 '''
>>> np.delete(a,[1,2],axis = 1)
array([[ 0, 3],
[ 4, 7],
[ 8, 11]])
切片操作 必須使用 numpy.s_
>>> import numpy as np
>>> a = np.arange(12).reshape(3,4)
>>> a
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]])
>>> np.delete(a, np.s_[1:3])
array([ 0, 3, 4, 5, 6, 7, 8, 9, 10, 11])
''' 刪除第2行和第3行 '''
>>> np.delete(a, np.s_[1:3],axis=0)
array([[0, 1, 2, 3]])
''' 刪除第2列和第3列 '''
>>> np.delete(a, np.s_[1:3],axis=1)
array([[ 0, 3],
[ 4, 7],
[ 8, 11]])
''' 步長為2 進行刪除,刪除 index 為 0, 2, 4 ....的元素 '''
>>> np.delete(a, np.s_[::2])
array([ 1, 3, 5, 7, 9, 11])
>>> np.delete(a, np.s_[::2],axis=0)
array([[4, 5, 6, 7]])
>>> np.delete(a, np.s_[::2],axis=1)
array([[ 1, 3],
[ 5, 7],
[ 9, 11]])
5)
用于去除數組中的重復元素
numpy.unique(arr, return_index, return_inverse, return_counts)
arr:輸入數組,如果不是一維數組則會展開
return_index:如果為true,返回新列表元素在舊列表中的位置(下標),并以列表形式儲
return_inverse:如果為true,返回舊列表元素在新列表中的位置(下標),并以列表形式儲
return_counts:如果為true,返回去重數組中的元素在原數組中的出現次數
>>> import numpy as np
>>> a = np.array([5,2,6,2,7,5,6,8,2,9])
>>> a
array([5, 2, 6, 2, 7, 5, 6, 8, 2, 9])
>>> np.unique(a)
array([2, 5, 6, 7, 8, 9])
return_index = True
>>> import numpy as np
>>> a = np.array([5,2,6,2,7,5,6,8,2,9])
>>> a
array([5, 2, 6, 2, 7, 5, 6, 8, 2, 9])
>>> np.unique(a, return_index = True)
(array([2, 5, 6, 7, 8, 9]), array([1, 0, 2, 4, 7, 9]))
return_inverse = True
>>> import numpy as np
>>> a = np.array([5,2,6,2,7,5,6,8,2,9])
>>> a
array([5, 2, 6, 2, 7, 5, 6, 8, 2, 9])
>>> np.unique(a,return_inverse = True)
(array([2, 5, 6, 7, 8, 9]), array([1, 0, 2, 0, 3, 1, 2, 4, 0, 5]))
return_counts = True
>>> import numpy as np
>>> a = np.array([5,2,6,2,7,5,6,8,2,9])
>>> a
array([5, 2, 6, 2, 7, 5, 6, 8, 2, 9])
>>> np.unique(a,return_counts = True)
(array([2, 5, 6, 7, 8, 9]), array([3, 2, 2, 1, 1, 1]))
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的python ndarray append_9-Python-NumPy数组元素的添加与删除的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: psp中java,PSP编程概述
- 下一篇: layui获得列表json数据_gola