最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

NumPy中flatten()函數(shù)的具體使用

 更新時間:2026年04月17日 10:06:19   作者:林深時見鹿1  
本文主要介紹了NumPy中flatten()函數(shù)的具體使用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

一、flatten () 核心定義

flatten() 是 NumPy 數(shù)組(ndarray)的內(nèi)置方法,作用是將任意維度(一維 / 二維 / 三維 / 高維)的數(shù)組 “展平” 為一維數(shù)組,并返回一個新的獨立數(shù)組(不與原數(shù)組共享內(nèi)存)。

簡單說:無論原數(shù)組是 2 行 3 列的二維數(shù)組,還是 2×3×4 的三維數(shù)組,flatten() 都會把所有元素按指定順序排成一行,且修改展平后的數(shù)組不會影響原數(shù)組。

核心語法

flattened_arr = arr.flatten(order='C') 
  • arr:待展平的 NumPy 數(shù)組(任意維度);
  • order:可選參數(shù),指定元素展平的順序(默認(rèn) 'C');
  • 返回值:一維數(shù)組(新數(shù)組,獨立內(nèi)存)。

二、基礎(chǔ)用法(不同維度數(shù)組展平)

示例 1:二維數(shù)組展平(最常用)

import numpy as np
# 原始二維數(shù)組(2行3列)
arr_2d = np.array([[1, 2, 3], [4, 5, 6]])
print("原始二維數(shù)組:\n", arr_2d)
print("原始形狀:", arr_2d.shape)  # (2, 3)
# 展平為一維數(shù)組(默認(rèn)順序)
arr_flat = arr_2d.flatten()
print("\n展平后的一維數(shù)組:", arr_flat)
print("展平后形狀:", arr_flat.shape)  # (6,)

輸出結(jié)果

原始二維數(shù)組:
 [[1 2 3]
 [4 5 6]]
原始形狀: (2, 3)
 
展平后的一維數(shù)組: [1 2 3 4 5 6]
展平后形狀: (6,)

示例 2:三維數(shù)組展平

三維數(shù)組可理解為 “多個二維矩陣的集合”,flatten() 會按順序把所有矩陣的元素拼接成一維:

import numpy as np
# 原始三維數(shù)組(2個3行2列的矩陣)
arr_3d = np.array([
    [[1, 2], [3, 4], [5, 6]],
    [[7, 8], [9, 10], [11, 12]]
])
print("原始三維數(shù)組形狀:", arr_3d.shape)  # (2, 3, 2)
# 展平為一維
arr_flat = arr_3d.flatten()
print("展平后的數(shù)組:", arr_flat)
print("展平后形狀:", arr_flat.shape)  # (12,)

輸出結(jié)果

原始三維數(shù)組形狀: (2, 3, 2)
展平后的數(shù)組: [ 1  2  3  4  5  6  7  8  9 10 11 12]
展平后形狀: (12,)

三、關(guān)鍵參數(shù):order(展平順序)

order 參數(shù)決定了元素展平的讀取順序,核心有 3 個取值,其中 'C''F' 最常用:

order 值含義讀取順序示例(二維數(shù)組 [[1,2],[3,4]])
'C'(默認(rèn))C 風(fēng)格(行優(yōu)先)先填滿每一行,再讀下一行[1,2,3,4]
'F'Fortran 風(fēng)格(列優(yōu)先)先填滿每一列,再讀下一列[1,3,2,4]
'A'按數(shù)組在內(nèi)存中的存儲順序若數(shù)組是 C 風(fēng)格存儲則等價于 'C',否則等價于 'F'通常和 'C' 一致

示例:不同 order 的展平效果

import numpy as np
arr_2d = np.array([[1, 2, 3], [4, 5, 6]])
# C風(fēng)格(行優(yōu)先,默認(rèn))
flat_c = arr_2d.flatten(order='C')
# F風(fēng)格(列優(yōu)先)
flat_f = arr_2d.flatten(order='F')
print("C風(fēng)格展平(行優(yōu)先):", flat_c)  # [1 2 3 4 5 6]
print("F風(fēng)格展平(列優(yōu)先):", flat_f)  # [1 4 2 5 3 6]

四、flatten () vs reshape (-1)(核心對比?。?/h2>

這是新手最易混淆的兩個展平方法,核心差異在于內(nèi)存是否共享,以下是詳細(xì)對比:

特性flatten()reshape(-1)
返回值新的獨立數(shù)組(拷貝)原數(shù)組的視圖(共享內(nèi)存)
內(nèi)存占用高(復(fù)制一份數(shù)據(jù))低(僅修改形狀,不復(fù)制數(shù)據(jù))
修改影響修改展平數(shù)組,原數(shù)組不變修改展平數(shù)組,原數(shù)組同步修改
速度較慢(需拷貝數(shù)據(jù))極快(僅調(diào)整形狀)
語法arr.flatten()arr.reshape(-1)

實戰(zhàn)對比示例:

import numpy as np
arr = np.array([[1, 2], [3, 4]])
# 1. 使用flatten()(獨立數(shù)組)
flat_flatten = arr.flatten()
flat_flatten[0] = 99  # 修改展平數(shù)組
print("flatten修改后 - 展平數(shù)組:", flat_flatten)  # [99  2  3  4]
print("flatten修改后 - 原數(shù)組:\n", arr)  # [[1 2],[3 4]] → 原數(shù)組不變
# 2. 使用reshape(-1)(共享內(nèi)存)
flat_reshape = arr.reshape(-1)
flat_reshape[0] = 99  # 修改展平數(shù)組
print("\nreshape修改后 - 展平數(shù)組:", flat_reshape)  # [99  2  3  4]
print("reshape修改后 - 原數(shù)組:\n", arr)  # [[99 2],[3 4]] → 原數(shù)組同步修改

五、適用場景(該用 flatten 還是 reshape?)

場景 1:優(yōu)先用 flatten () 的情況

需要保留原數(shù)組不變,避免修改展平數(shù)組影響原數(shù)據(jù);

展平后需對數(shù)據(jù)做大量修改,且不想污染原始數(shù)據(jù);

示例(數(shù)據(jù)備份 / 獨立處理):

# 原始溫度數(shù)據(jù)(二維)
temp_2d = np.random.normal(5, 6, (31, 24)).round(1)
# 展平為一維用于統(tǒng)計,且不修改原數(shù)據(jù)
temp_flat = temp_2d.flatten()
temp_flat[0] = 0  # 僅修改拷貝,原數(shù)據(jù)不受影響
print("原數(shù)據(jù)第一值:", temp_2d[0,0])  # 仍為原始溫度值

場景 2:優(yōu)先用 reshape (-1) 的情況

僅需臨時展平數(shù)組(如計算總和、均值),無需保留展平后的數(shù)組;

處理大規(guī)模數(shù)據(jù)(如百萬級元素),追求速度和內(nèi)存效率;

示例(快速統(tǒng)計):

# 大規(guī)模數(shù)據(jù)(10萬行×10列)
big_arr = np.random.rand(100000, 10)
# 快速展平計算總和(無需拷貝,速度快)
total = big_arr.reshape(-1).sum()
print("總和:", total)

六、進階用法:高維數(shù)組展平 + 指定順序

對于高維數(shù)組(如 4 維圖像數(shù)據(jù)),可通過 order 參數(shù)控制展平順序,適配不同業(yè)務(wù)需求:

import numpy as np
# 4維數(shù)組:2張圖片 × 32行 × 32列 × 3通道(RGB)
img_arr = np.random.randint(0, 255, (2, 32, 32, 3))
print("原始4維數(shù)組形狀:", img_arr.shape)  # (2, 32, 32, 3)
# 按行優(yōu)先展平(默認(rèn))
img_flat_c = img_arr.flatten(order='C')
print("C風(fēng)格展平形狀:", img_flat_c.shape)  # (6144,) → 2×32×32×3=6144
# 按列優(yōu)先展平
img_flat_f = img_arr.flatten(order='F')
print("F風(fēng)格展平形狀:", img_flat_f.shape)  # (6144,)

七、避坑點與常見問題

1. 常見誤區(qū)

  • ? 認(rèn)為 flatten() 是 NumPy 函數(shù):它是數(shù)組對象的方法,不能直接用 np.flatten(arr),必須用 arr.flatten();
  • ? 混淆 flatten() 和 ravel():ravel() 是 NumPy 函數(shù),效果接近 reshape(-1)(返回視圖,共享內(nèi)存),而 flatten() 返回拷貝;
  • ? 展平后修改原數(shù)組:若用 flatten(),修改展平數(shù)組不會影響原數(shù)組,反之亦然。

2. 報錯場景

對非 NumPy 數(shù)組使用 flatten():Python 列表沒有 flatten() 方法,需先轉(zhuǎn)為 ndarray:

# 錯誤:list.flatten()
# lst = [[1,2],[3,4]]
# lst.flatten() → AttributeError
# 正確:先轉(zhuǎn)NumPy數(shù)組
lst = [[1,2],[3,4]]
arr = np.array(lst)
arr.flatten()  # [1 2 3 4]

總結(jié)

  1. flatten() 核心是將任意維度數(shù)組展平為一維,返回獨立拷貝,修改后不影響原數(shù)組;
  2. 關(guān)鍵參數(shù) order:'C'(行優(yōu)先,默認(rèn))、'F'(列優(yōu)先)控制展平順序;
  3. 與 reshape(-1) 核心區(qū)別:flatten() 是拷貝(獨立),reshape(-1) 是視圖(共享內(nèi)存);
  4. 選型原則:
    • 需獨立數(shù)據(jù) → 用 flatten();
    • 追求效率 / 臨時展平 → 用 reshape(-1);
  5. 避坑關(guān)鍵:僅對 NumPy 數(shù)組使用 flatten(),Python 列表需先轉(zhuǎn) ndarray。

到此這篇關(guān)于NumPy中flatten()函數(shù)的具體使用的文章就介紹到這了,更多相關(guān)NumPy flatten()函數(shù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 在python 不同時區(qū)之間的差值與轉(zhuǎn)換方法

    在python 不同時區(qū)之間的差值與轉(zhuǎn)換方法

    今天小編就為大家分享一篇在python 不同時區(qū)之間的差值與轉(zhuǎn)換方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-01-01
  • Python運行時修改業(yè)務(wù)SQL代碼

    Python運行時修改業(yè)務(wù)SQL代碼

    這篇文章主要介紹了Python運行時修改業(yè)務(wù)SQL代碼,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-06-06
  • 使用python實現(xiàn)讀取文件夾中所有excel

    使用python實現(xiàn)讀取文件夾中所有excel

    相信很多坐在辦公室上班的朋友每天都需要處理大量的數(shù)據(jù),本文我們就來看看如何使用Openpyxl讀取文件夾下所有Excel文檔中的數(shù)據(jù),文中示例代碼講解詳細(xì),感興趣的小伙伴可以了解下
    2025-12-12
  • java判斷三位數(shù)的實例講解

    java判斷三位數(shù)的實例講解

    在本文里小編給大家整理了關(guān)于java怎么判斷三位數(shù)的實例方法以及要點總結(jié),需要的朋友們跟著學(xué)習(xí)下。
    2019-06-06
  • Python3實現(xiàn)網(wǎng)頁內(nèi)容轉(zhuǎn)換成PDF文檔和圖片

    Python3實現(xiàn)網(wǎng)頁內(nèi)容轉(zhuǎn)換成PDF文檔和圖片

    pdfkit是把 HTML+CSS 格式的文件轉(zhuǎn)換成 PDF 的一種工具,它是 wkhtmltopdf 這個工具包的 python 封裝。本文將利用pdfkit實現(xiàn)網(wǎng)頁內(nèi)容轉(zhuǎn)換成PDF文檔和圖片效果,感興趣的可以學(xué)習(xí)一下
    2022-06-06
  • .dcm格式文件軟件讀取及python處理詳解

    .dcm格式文件軟件讀取及python處理詳解

    今天小編就為大家分享一篇.dcm格式文件軟件讀取及python處理詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-01-01
  • python+selenium select下拉選擇框定位處理方法

    python+selenium select下拉選擇框定位處理方法

    今天小編就為大家分享一篇python+selenium select下拉選擇框定位處理方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-08-08
  • Python實現(xiàn)的棧、隊列、文件目錄遍歷操作示例

    Python實現(xiàn)的棧、隊列、文件目錄遍歷操作示例

    這篇文章主要介紹了Python實現(xiàn)的棧、隊列、文件目錄遍歷操作,結(jié)合實例形式分析了Python數(shù)據(jù)結(jié)構(gòu)中棧與隊列的定義、使用,以及文件目錄的遍歷相關(guān)操作技巧,需要的朋友可以參考下
    2019-05-05
  • 詳解python算法常用技巧與內(nèi)置庫

    詳解python算法常用技巧與內(nèi)置庫

    這篇文章主要介紹了python算法常用技巧與內(nèi)置庫,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-10-10
  • 如何解決jupyter?notebook中文亂碼問題

    如何解決jupyter?notebook中文亂碼問題

    這篇文章主要介紹了如何解決jupyter?notebook中文亂碼問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-06-06

最新評論

荥经县| 澄迈县| 伊宁县| 潼关县| 九台市| 萍乡市| 巴彦淖尔市| 涞水县| 武冈市| 汽车| 广元市| 武山县| 三台县| 华宁县| 海阳市| 晋江市| 文昌市| 炎陵县| 杂多县| 丰镇市| 平山县| 河间市| 尼玛县| 南靖县| 成安县| 洛浦县| 东乌| 南宁市| 新丰县| 嘉鱼县| 砚山县| 巢湖市| 乌拉特前旗| 隆德县| 江孜县| 乃东县| 中牟县| 昌乐县| 威信县| 贵州省| 佛教|