9-Python-NumPy數(shù)組元素的添加與刪除

數(shù)組元素的添加與刪除 相關(guān)函數(shù)列表如下:

函數(shù) 元素及描述
resize 返回指定形狀的新數(shù)組
append 將值添加到數(shù)組末尾
insert 沿指定軸將值插入到指定下標(biāo)之前
delete 刪掉某個(gè)軸的子數(shù)組,并返回刪除后的新數(shù)組
unique 查找數(shù)組內(nèi)的唯一元素

1)\color{red}{numpy.resize} 返回指定大小的新數(shù)組

numpy.resize(arr, shape)
  • arr:要修改大小的數(shù)組
  • shape:返回?cái)?shù)組的新形狀

新數(shù)組小于原始數(shù)組

>>> 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]])

新數(shù)組大于原始數(shù)組

>>> 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]])

總結(jié):

  • 如果新數(shù)組大小小于原始大小著恩,會(huì)默認(rèn)按行對(duì)原始數(shù)組進(jìn)行取值贰健,直到取夠?yàn)橹?/li>
  • 如果新數(shù)組大小大于原始大小蹂季,會(huì)默認(rèn)按行重復(fù)使用原始數(shù)組中的元素色罚,會(huì)包含原始數(shù)組中的元素的副本追葡。

2)\color{red}{numpy.append} 在數(shù)組的末尾添加值预皇。 追加操作會(huì)分配整個(gè)數(shù)組益咬,并把原來(lái)的數(shù)組復(fù)制到新數(shù)組中逮诲。 此外,輸入數(shù)組的維度必須匹配否則將生成ValueError幽告。

numpy.append(arr, values, axis=None)
  • arr:輸入數(shù)組
  • values:要向arr添加的值梅鹦,需要和arr形狀相同(除了要添加的軸)
  • axis:默認(rèn)為 None
    • 當(dāng)axis=None時(shí),是橫向加成冗锁,對(duì)添加的元素的個(gè)數(shù)和類型無(wú)要求齐唆,返回總是為一維數(shù)組
    • 當(dāng)axis=0時(shí),增加的是原始數(shù)組的行數(shù)冻河,因此添加的列表必須是二維[[]]箍邮。若要添加一行,子列表元素個(gè)數(shù)是1[[]]叨叙,添加二行媒殉,子列表元素個(gè)數(shù)是2[[],[]]。子列表元素個(gè)數(shù)要與原始數(shù)組的列數(shù)相同摔敛。
    • 當(dāng)axis=1時(shí)廷蓉,增加的是原始數(shù)組的列數(shù),因此添加的列表元素個(gè)數(shù)要與原始數(shù)組的行數(shù)相同马昙,增加的列數(shù)取決于子列表的元素個(gè)數(shù)

不定義axis桃犬,返回的都是一維數(shù)組

>>> 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])

''' 嘗試添加多維數(shù)組'''
>>> 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 添加元素,即增加原始數(shù)組的行數(shù)'''
>>> 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 添加元素行楞,即增加原始數(shù)組的列數(shù)'''
>>> 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)\color{red}{numpy.insert} 用法和 numpy.append類似攒暇,但沒(méi)有append嚴(yán)格

numpy.insert(arr, obj, values, axis)
  • arr:輸入數(shù)組
  • obj:在其之前插入值的索引
  • values:要插入的值
  • axis:沿著它插入的軸,如果未提供子房,則輸入數(shù)組會(huì)被展開(kāi)
    • 不傳遞axis參數(shù)時(shí)形用,是橫向加成,添加對(duì)象是單個(gè)元素或者是一維數(shù)組(列表)证杭,可以是一個(gè)元素田度,也可以是一個(gè)列表(包含1個(gè)以上元素),返回總是為一維數(shù)組
    • 當(dāng)axis=0時(shí)解愤,添加對(duì)象可以是1個(gè)元素或者數(shù)組镇饺,當(dāng)為數(shù)組時(shí),添加的數(shù)組維度可以是(1送讲,1)或者和原始數(shù)組相等奸笤,但不能大或者不等
    • 當(dāng)axis=1時(shí)惋啃,添加對(duì)象可以是1個(gè)元素或者數(shù)組,當(dāng)為數(shù)組時(shí)监右,添加數(shù)組的維度可以是(1边灭,1),或者必須原始數(shù)組列數(shù)相同健盒,但不能大或者不等

numpy.insert添加的對(duì)象可以是一個(gè)元素或者數(shù)組

未傳遞 axis 參數(shù)绒瘦,生成的是一維數(shù)組

>>> 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)\color{red}{numpy.delete} 返回從輸入數(shù)組中刪除指定子數(shù)組的新數(shù)組。 與 insert() 函數(shù)的情況一樣味榛,如果未提供軸參數(shù)椭坚,則輸入數(shù)組將展開(kāi)。

Numpy.delete(arr, obj, axis)
  • arr:輸入數(shù)組
  • obj:可以被切片搏色,整數(shù)或者整數(shù)數(shù)組善茎,表明要從輸入數(shù)組刪除的子數(shù)組
  • axis:沿著它刪除給定子數(shù)組的軸,如果未提供频轿,則輸入數(shù)組會(huì)被展開(kāi)

未傳遞 Axis 參數(shù)垂涯,生成一個(gè)一維數(shù)組

>>> 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,對(duì)行進(jìn)行操作

>>> 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航邢,對(duì)列進(jìn)行操作

>>> 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]])

''' 步長(zhǎng)為2 進(jìn)行刪除耕赘,刪除 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)\color{red}{numpy.unique} 用于去除數(shù)組中的重復(fù)元素

numpy.unique(arr, return_index, return_inverse, return_counts)
  • arr:輸入數(shù)組操骡,如果不是一維數(shù)組則會(huì)展開(kāi)
  • return_index:如果為true,返回新列表元素在舊列表中的位置(下標(biāo))赚窃,并以列表形式儲(chǔ)
  • return_inverse:如果為true册招,返回舊列表元素在新列表中的位置(下標(biāo)),并以列表形式儲(chǔ)
  • return_counts:如果為true勒极,返回去重?cái)?shù)組中的元素在原數(shù)組中的出現(xiàn)次數(shù)
>>> 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]))

轉(zhuǎn):https://www.runoob.com/numpy/numpy-array-manipulation.html#numpy_oparr1

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末是掰,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子辱匿,更是在濱河造成了極大的恐慌键痛,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,470評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件匾七,死亡現(xiàn)場(chǎng)離奇詭異絮短,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)乐尊,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,393評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門戚丸,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人扔嵌,你說(shuō)我怎么就攤上這事限府。” “怎么了痢缎?”我有些...
    開(kāi)封第一講書人閱讀 162,577評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵胁勺,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我独旷,道長(zhǎng)署穗,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書人閱讀 58,176評(píng)論 1 292
  • 正文 為了忘掉前任嵌洼,我火速辦了婚禮案疲,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘麻养。我一直安慰自己褐啡,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,189評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布鳖昌。 她就那樣靜靜地躺著备畦,像睡著了一般。 火紅的嫁衣襯著肌膚如雪许昨。 梳的紋絲不亂的頭發(fā)上懂盐,一...
    開(kāi)封第一講書人閱讀 51,155評(píng)論 1 299
  • 那天,我揣著相機(jī)與錄音糕档,去河邊找鬼莉恼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛速那,可吹牛的內(nèi)容都是我干的俐银。 我是一名探鬼主播,決...
    沈念sama閱讀 40,041評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼琅坡,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼悉患!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起榆俺,我...
    開(kāi)封第一講書人閱讀 38,903評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤售躁,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后茴晋,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體陪捷,經(jīng)...
    沈念sama閱讀 45,319評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,539評(píng)論 2 332
  • 正文 我和宋清朗相戀三年诺擅,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了市袖。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,703評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖苍碟,靈堂內(nèi)的尸體忽然破棺而出酒觅,到底是詐尸還是另有隱情,我是刑警寧澤微峰,帶...
    沈念sama閱讀 35,417評(píng)論 5 343
  • 正文 年R本政府宣布舷丹,位于F島的核電站,受9級(jí)特大地震影響蜓肆,放射性物質(zhì)發(fā)生泄漏颜凯。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,013評(píng)論 3 325
  • 文/蒙蒙 一仗扬、第九天 我趴在偏房一處隱蔽的房頂上張望症概。 院中可真熱鬧,春花似錦早芭、人聲如沸彼城。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 31,664評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)精肃。三九已至,卻和暖如春帜乞,著一層夾襖步出監(jiān)牢的瞬間司抱,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 32,818評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工黎烈, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留习柠,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,711評(píng)論 2 368
  • 正文 我出身青樓照棋,卻偏偏與公主長(zhǎng)得像资溃,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子烈炭,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,601評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容