无主之地2配置高吗|看真人裸体BBBBB|秋草莓丝瓜黄瓜榴莲色多多|真人強奷112分钟|精品一卡2卡3卡四卡新区|日本成人深夜苍井空|八十年代动画片

網易首頁 > 網易號 > 正文 申請入駐

NumPy 函數手冊:數組元素修改操作

0
分享至

在數據分析、科學計算以及機器學習中,除了讀取和提取數組元素之外,還經常需要修改數組中的數據。

NumPy 提供了一組與數組數據寫入、條件替換、整體填充以及結構調整相關的函數。這些函數能夠在數組層面完成批量操作,從而避免 Python 循環帶來的性能損失。

按照功能劃分,NumPy 中與數組元素修改相關的常用函數通常可以分為以下幾類:

(1)寫入與替換

(2)插入元素

(3)刪除元素

(4)數組填充

一、寫入與替換

put()

根據指定索引向數組中寫入元素。

numpy.put(a, ind, v, mode='raise')

參數說明:

? a:輸入數組(將被原地修改)

? ind:索引位置

? v:要寫入的值

? mode:索引越界處理方式

clip:截斷到邊界

示例 1:

# [10 99 30 88]

說明:索引位置 1 和 3 的元素被替換為 99 和 88。

需要注意的是,put() 始終基于數組的 C-order 扁平索引(row-major flattened index)進行定位,而不考慮原數組的多維結構。

示例 2:

print(A)

輸出:

 [99  4]]

二維數組在內部按一維順序 [1,2,3,4],故索引 2 對應元素 3。

示例 3:

# [20  1 30  3]

說明:當 ind 中出現重復位置時,后寫入的值會覆蓋前寫入的值。

put_along_axis()

沿指定軸根據索引寫入元素。

numpy.put_along_axis(arr, indices, values, axis)

參數說明:

? arr:輸入數組

? indices:索引數組

? values:要寫入的值

? axis:指定軸

示例:

print(A)

輸出:

 [88 50 60]]

第 0 行索引為 1,因此將 20 替換為 99;第 1 行索引為 0,因此將 40 替換為 88。

indices 的形狀應與 arr 在除 axis 外的各維相兼容,其作用是在指定軸上為每個位置提供寫入下標。

put_along_axis() 常與 argmax()、argsort() 等函數配合使用。

place()

根據條件替換數組中的元素。

numpy.place(arr, mask, vals)

參數說明:

? arr:輸入數組

? mask:布爾條件數組

? vals:替換值

示例:

print(a)

輸出:

[ 1  2  3 99 88]

滿足條件 a > 3 的元素被替換為指定值。

如果 vals 數量不足,NumPy 會循環使用這些值。

place() 會按一維遍歷順序將 vals 中的值依次填入 mask 為 True 的位置;若 vals 不足,則循環使用。

putmask()

根據條件掩碼替換數組中的元素。

numpy.putmask(arr, mask, values)

參數說明:

? arr:輸入數組(將被原地修改)

? mask:布爾條件數組

? values:替換值

該函數會將 mask 為 True 的位置替換為指定值。

示例 1:

print(a)

輸出:

[1 2 3 0 0]

滿足條件 a > 3 的元素被替換為 0。

示例 2:二維數組

print(A)

輸出:

 [-1 -1 -1]]

條件 A > 3 的位置全部被替換為 -1。

putmask() 更強調“按掩碼位置寫入”,其 values 會按廣播或重復規則作用到滿足條件的位置。

需要注意的是 putmask() 會直接修改原數組,而不是返回新數組。

如果希望返回新數組而不直接修改原數組,也可以使用 where()。它會根據條件在兩個候選值之間進行選擇,并生成新的結果數組。

示例:

print(B)

輸出:

 [-1 -1 -1]]

copyto()

將一個數組的數據復制到另一個數組中。

numpy.copyto(dst, src, casting='same_kind', where=True)

參數說明:

? dst:目標數組

? src:源數組

? where:條件掩碼

? casting:類型轉換規則

示例:

print(a)

輸出:

[ 1  2 30 40]

只有滿足條件 b > 20 的元素才會被復制到數組 a 中。

copyto() 常用于實現帶條件的批量賦值。它支持顯式控制類型轉換規則(如 casting),并按 NumPy 的廣播規則將源數據復制到目標數組中。

ufunc.at()(以 np.add.at() 為例)

對指定索引位置執行原地運算,尤其適用于處理重復索引時的累積寫入。

常見用法:

numpy.add.at(a, indices, b)

參數說明:

? a:目標數組(將被原地修改)

? indices:索引位置

? b:參與運算的值

示例:

# [2 0 1]

索引位置 0 出現兩次,因此對應元素被累加兩次;索引位置 2 出現一次,因此該位置加 1。

對比普通寫法:

# [1 0 1]

普通高級索引賦值在遇到重復索引時,結果通常不是逐次累積;而 np.add.at() 會逐次作用到每個索引位置,因此更適合統計、累計等場景。

補充說明:

at() 是通用函數(ufunc)的方法,而不是獨立模塊函數。

常見形式有:

np.minimum.at()

它主要用于需要“原地、逐次、可處理重復索引”的更新場景。

二、插入元素

insert()

在數組指定位置插入元素。

numpy.insert(arr, obj, values, axis=None)

參數說明:

? arr:輸入數組

? obj:插入位置

? values:插入的值

? axis:指定軸

示例 1:

np.insert(a, 2, 99)

輸出:

[ 1  2 99  3  4]

說明:在索引位置 2 插入元素 99。

示例 2:二維數組(指定軸)

np.insert(A, 1, [9, 9, 9], axis=0)

輸出:

 [4 5 6]]

在 axis=0(行方向)的索引 1 處插入新行 [9,9,9]。

需要注意的是,insert() 不會修改原數組,而是返回新的數組。

三、刪除元素

delete()

刪除數組中指定位置的元素。

numpy.delete(arr, obj, axis=None)

參數說明:

? arr:輸入數組

? obj:刪除位置

? axis:指定軸

示例 1:

np.delete(a, 1)

輸出:

[10 30 40]

刪除索引位置 1 的元素。

示例 2:二維數組(指定軸)

np.delete(A, 1, axis=1)

輸出:

 [4 6]]

在 axis=1(列方向)刪除索引 1 的列。

delete() 會返回新的數組,而不會修改原數組。

提示:

需要注意的是,insert() 與 delete() 在內部會創建新數組并復制數據,因此在大規模數據處理中性能較低。若需要頻繁修改數組結構,通常建議先使用 Python 列表構建數據,再轉換為 NumPy 數組。

四、數組填充

fill()

用指定值填充整個數組。

ndarray.fill(value)

參數說明:

? value:填充值

示例:

print(a)

輸出:

[0 0 0 0]

數組中的所有元素都會被替換為指定值。

提示:

fill() 是 ndarray 對象的方法,用于原地將數組所有元素填充為同一個值,而不是 numpy 模塊下的獨立函數。

小結

NumPy 提供了一組常用的數組修改函數,包括按索引寫入(put、put_along_axis)、按條件替換(place、putmask、copyto)、處理重復索引下的原地累積更新(如 np.add.at())、結構調整(insert、delete)以及整體填充(fill)。需要特別注意的是,不同函數在是否原地修改、是否返回新數組以及性能特征上存在顯著差異。在實際應用中,應根據數據規模與計算方式選擇合適的操作,以兼顧表達清晰性與執行效率。

點贊有美意,贊賞是鼓勵

特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相關推薦
熱點推薦
美加墨世界杯第二場比賽就現空座,票價爭議浮出水面

美加墨世界杯第二場比賽就現空座,票價爭議浮出水面

澎湃新聞
2026-06-12 17:40:29
尼克斯奪冠軍點 老板與官方起爭端

尼克斯奪冠軍點 老板與官方起爭端

體壇周報
2026-06-13 01:47:17
魚餌含精神藥品“安定”!日產十噸銷往全國,廠家:魚被麻痹狂咬鉤 利潤率50%

魚餌含精神藥品“安定”!日產十噸銷往全國,廠家:魚被麻痹狂咬鉤 利潤率50%

貓頭鷹視頻
2026-06-12 19:15:43
普京再次回應戰爭起源:不是俄開戰,是基輔先向頓巴斯開火

普京再次回應戰爭起源:不是俄開戰,是基輔先向頓巴斯開火

桂系007
2026-06-12 23:57:08
這4個行業,已經發不出工資了!真的很嚴重了

這4個行業,已經發不出工資了!真的很嚴重了

職場資深秘書
2026-06-11 16:00:48
13日凌晨WTT挑戰賽:男單4強賽誕生 溫瑞博苦戰5局 林詩棟也被淘汰

13日凌晨WTT挑戰賽:男單4強賽誕生 溫瑞博苦戰5局 林詩棟也被淘汰

林子說事
2026-06-13 03:24:14
四川律師譚萬瀟終于被抓了,這三年,是誰在給他撐傘?

四川律師譚萬瀟終于被抓了,這三年,是誰在給他撐傘?

千千法言
2026-06-12 12:02:47
中美之間,已經沒有回頭路了。美國已經勒住中國經濟的咽喉

中美之間,已經沒有回頭路了。美國已經勒住中國經濟的咽喉

果媽聊娛樂
2026-06-12 08:00:34
到底真的假的?網傳幾乎所有大學專業都在勸退…

到底真的假的?網傳幾乎所有大學專業都在勸退…

慧翔百科
2026-06-12 17:40:37
馬斯克正式成為人類首個10000億美元富豪,還帶動約400名員工成為億萬富翁;這些錢每小時花100萬美元、24小時不停,需要超114年才能花完

馬斯克正式成為人類首個10000億美元富豪,還帶動約400名員工成為億萬富翁;這些錢每小時花100萬美元、24小時不停,需要超114年才能花完

極目新聞
2026-06-12 22:28:06
我跟嫂子去賣牛,路過一片玉米地時,她突然貼近我耳朵說了句話

我跟嫂子去賣牛,路過一片玉米地時,她突然貼近我耳朵說了句話

千秋文化
2026-06-11 17:58:11
主犯獲刑12年半罰沒1600萬!含砷“脫酸劑”讓耙耙柑提前一月上市,果肉檢出重金屬

主犯獲刑12年半罰沒1600萬!含砷“脫酸劑”讓耙耙柑提前一月上市,果肉檢出重金屬

紅星新聞
2026-06-05 09:04:20
釘釘CEO無招被開除,一切都結束了

釘釘CEO無招被開除,一切都結束了

科技頭版Pro
2026-06-12 14:15:22
韓國也有胡爾克!25歲吳賢揆世界杯首秀致勝 大腿肌肉如綠巨人

韓國也有胡爾克!25歲吳賢揆世界杯首秀致勝 大腿肌肉如綠巨人

智道足球
2026-06-12 16:51:52
WC!勇士!史詩級三巨頭...

WC!勇士!史詩級三巨頭...

技巧君侃球
2026-06-12 18:11:51
英媒一語驚人:中美貿易戰中,美國唯獨算錯的是中國的底牌!

英媒一語驚人:中美貿易戰中,美國唯獨算錯的是中國的底牌!

流史歲月
2026-06-12 18:30:08
江蘇師大兩名外籍留學生插隊吐口水還動手打人,市民追兩條街制服

江蘇師大兩名外籍留學生插隊吐口水還動手打人,市民追兩條街制服

大廠編外實習生
2026-06-12 15:56:50
SpaceX 開盤大漲29%! 市值約2.28萬億美元 航天概念股普跌

SpaceX 開盤大漲29%! 市值約2.28萬億美元 航天概念股普跌

每日經濟新聞
2026-06-12 22:21:45
金正恩:我們的選擇是正確的

金正恩:我們的選擇是正確的

IN朝鮮
2026-06-12 13:10:39
數據出爐,爆了!世界杯在中國收視率,讓所有 FIFA 領導層后怕

數據出爐,爆了!世界杯在中國收視率,讓所有 FIFA 領導層后怕

酷侃體壇
2026-06-12 18:57:16
2026-06-13 04:48:49
MediaTea
MediaTea
專業的數字媒體、新媒體技術
1888文章數 80關注度
往期回顧 全部

科技要聞

剛剛,人類歷史上首位萬億美元富豪誕生!

頭條要聞

SpaceX上市首日收漲19% 總市值報2.1萬億美元

頭條要聞

SpaceX上市首日收漲19% 總市值報2.1萬億美元

體育要聞

歐洲恐韓?肉德維德?

娛樂要聞

一天4個瓜,肖戰熱巴最意外

財經要聞

萬億美元順差背后,透露這些信號

汽車要聞

標配激光雷達/雙動力可選 昊鉑S600限時售17.99萬起

態度原創

健康
本地
教育
數碼
公開課

老人、小孩、孕婦,吃粽子有啥風險

本地新聞

AK劉彰邂逅河北南大港濕地

教育要聞

家長成了“瘋女人”,被女兒作業搞崩潰,網友:太真實

數碼要聞

英國監管機構警告:亞馬遜、eBay仍在售可能致命的假冒手機充電器

公開課

李玫瑾:為什么性格比能力更重要?

無障礙瀏覽 進入關懷版