欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python中reshape的使用詳解

 更新時(shí)間:2025年04月10日 15:57:45   作者:浩瀚之水_csdn  
這篇文章主要介紹了Python中reshape的使用,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

Python中reshape的使用

在 Python 中,reshape 函數(shù)主要用于調(diào)整數(shù)組或矩陣的維度,?尤其常見(jiàn)于 NumPy 和 Pandas 庫(kù)。

以下是詳細(xì)的用法和示例:

1. ?NumPy 中的 reshape

NumPy 的 reshape 是調(diào)整數(shù)組維度的核心工具,適用于科學(xué)計(jì)算和多維數(shù)據(jù)處理。

基本語(yǔ)法

numpy.reshape(array, new_shape, order='C')

或直接調(diào)用數(shù)組對(duì)象的 reshape 方法:

arr.reshape(new_shape)

參數(shù)說(shuō)明

?**new_shape: 目標(biāo)形狀(如 (行, 列)),可以是整數(shù)或元組。

  • 關(guān)鍵規(guī)則**:新形狀的元素總數(shù)必須與原數(shù)組一致(例如,原數(shù)組有 6 個(gè)元素,可改為 (2,3),但不能改為 (3,3))。

?**order**:可選參數(shù),控制元素填充順序:

  • 'C'(默認(rèn)):按行優(yōu)先(C 風(fēng)格)填充。
  • 'F':按列優(yōu)先(Fortran 風(fēng)格)填充。

示例代碼

  • 示例 1:一維轉(zhuǎn)二維
import numpy as np

arr = np.array([1, 2, 3, 4, 5, 6])
reshaped = arr.reshape((2, 3))  # 改為 2 行 3 列
print(reshaped)
# 輸出:
# [[1 2 3]
#  [4 5 6]]
  • 示例 2:多維數(shù)組調(diào)整
matrix = np.array([[1, 2], [3, 4], [5, 6]])
# 改為 2行3列(總元素?cái)?shù)必須為6)
new_matrix = matrix.reshape((2, 3))  
print(new_matrix)
# 輸出:
# [[1 2 3]
#  [4 5 6]]
  • 示例 3:自動(dòng)推斷維度(使用 -1

通過(guò) -1 自動(dòng)計(jì)算某一維的大?。?/p>

arr = np.array([1, 2, 3, 4, 5, 6])
# 自動(dòng)計(jì)算行數(shù)(總元素?cái)?shù)=6 → 行數(shù)=6/3=2)
reshaped = arr.reshape((-1, 3))  
print(reshaped)
# 輸出:
# [[1 2 3]
#  [4 5 6]]
  • 示例 4:調(diào)整維度順序(order參數(shù))
arr = np.array([1, 2, 3, 4, 5, 6])
# 按列優(yōu)先填充
fortran_arr = arr.reshape((2, 3), order='F')  
print(fortran_arr)
# 輸出:
# [[1 3 5]
#  [2 4 6]]

2. ?Pandas 中的 reshape

Pandas 主要通過(guò)以下方法實(shí)現(xiàn)數(shù)據(jù)重塑:

  • ?**stack() / unstack()**: 行列轉(zhuǎn)換。
  • ?**pivot() / melt()**: 寬表與長(zhǎng)表轉(zhuǎn)換。

示例:stack 和 unstack

import pandas as pd

# 創(chuàng)建一個(gè) DataFrame
df = pd.DataFrame({
    "A": [1, 2, 3],
    "B": [4, 5, 6]
}, index=["X", "Y", "Z"])

# 將列堆疊為行(生成多級(jí)索引)
stacked = df.stack()
print(stacked)
# 輸出:
# X  A    1
#    B    4
# Y  A    2
#    B    5
# Z  A    3
#    B    6

# 恢復(fù)原形狀
unstacked = stacked.unstack()
print(unstacked)

3. ?注意事項(xiàng)

?元素總數(shù)必須一致:否則會(huì)拋出 ValueError。

?返回的是視圖(View)還是副本(Copy)?

  • NumPy 的 reshape 默認(rèn)返回視圖(修改視圖會(huì)影響原數(shù)組)。
  • 若無(wú)法生成視圖(如內(nèi)存不連續(xù)),則返回副本。

?避免混淆 reshape resize

  • reshape 不改變?cè)瓟?shù)組,返回新形狀的數(shù)組。
  • resize 直接修改原數(shù)組的形狀(可能導(dǎo)致數(shù)據(jù)截?cái)嗷蛱畛洌?/li>

4. ?實(shí)際應(yīng)用場(chǎng)景

  • ?圖像處理:將一維像素?cái)?shù)組轉(zhuǎn)換為三維(高度, 寬度, 通道數(shù))。
  • ?機(jī)器學(xué)習(xí):調(diào)整輸入數(shù)據(jù)的形狀以匹配模型要求(如將 (樣本數(shù),) 改為 (樣本數(shù), 1))。
  • ?數(shù)據(jù)清洗:將寬表轉(zhuǎn)換為長(zhǎng)表(Pandas 的 melt)。

5. ?常見(jiàn)錯(cuò)誤

# 錯(cuò)誤示例:元素總數(shù)不匹配
arr = np.array([1, 2, 3])
try:
    arr.reshape((2, 2))  # 3元素?zé)o法填充2x2=4的位置
except ValueError as e:
    print(e)  # 輸出:cannot reshape array of size 3 into shape (2,2)

通過(guò) reshape,你可以靈活處理數(shù)據(jù)維度,適配不同算法和場(chǎng)景的需求。根據(jù)任務(wù)選擇 NumPy(多維數(shù)組)或 Pandas(表格數(shù)據(jù))的對(duì)應(yīng)方法。

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • python讀取文本中數(shù)據(jù)并轉(zhuǎn)化為DataFrame的實(shí)例

    python讀取文本中數(shù)據(jù)并轉(zhuǎn)化為DataFrame的實(shí)例

    下面小編就為大家分享一篇python讀取文本中數(shù)據(jù)并轉(zhuǎn)化為DataFrame的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-04-04
  • 使用Python & Flask 實(shí)現(xiàn)RESTful Web API的實(shí)例

    使用Python & Flask 實(shí)現(xiàn)RESTful Web API的實(shí)例

    下面小編就為大家?guī)?lái)一篇使用Python & Flask 實(shí)現(xiàn)RESTful Web API的實(shí)例。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-09-09
  • python從sqlite讀取并顯示數(shù)據(jù)的方法

    python從sqlite讀取并顯示數(shù)據(jù)的方法

    這篇文章主要介紹了python從sqlite讀取并顯示數(shù)據(jù)的方法,涉及Python操作SQLite數(shù)據(jù)庫(kù)的讀取及顯示相關(guān)技巧,需要的朋友可以參考下
    2015-05-05
  • Qt Quick QML-500行代碼實(shí)現(xiàn)合成大西瓜游戲

    Qt Quick QML-500行代碼實(shí)現(xiàn)合成大西瓜游戲

    合成大西瓜游戲是前段時(shí)間比較火的小游戲,最近小編閑來(lái)無(wú)事,通過(guò)研究小球碰撞原理親自寫(xiě)碰撞算法實(shí)現(xiàn)一個(gè)合成大西瓜游戲,下面小編把我的實(shí)現(xiàn)思路及核心代碼分析出來(lái),供大家參考
    2021-05-05
  • Django自定義權(quán)限及用戶分組

    Django自定義權(quán)限及用戶分組

    這篇文章主要為大家介紹了Django登錄權(quán)限及分組模板使用權(quán)限,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-06-06
  • Python Pandas高級(jí)教程之時(shí)間處理

    Python Pandas高級(jí)教程之時(shí)間處理

    我們發(fā)現(xiàn)關(guān)于時(shí)間日期的簡(jiǎn)單計(jì)算很多功能都是datetime庫(kù)提供的,那么pandas有沒(méi)有提供跟日期時(shí)間有關(guān)的函數(shù),通過(guò)下面文章來(lái)了解下,這篇文章主要給大家介紹了關(guān)于Python Pandas高級(jí)教程之時(shí)間處理的相關(guān)資料,需要的朋友可以參考下
    2021-10-10
  • Python函數(shù)裝飾器實(shí)現(xiàn)方法詳解

    Python函數(shù)裝飾器實(shí)現(xiàn)方法詳解

    這篇文章主要介紹了Python函數(shù)裝飾器實(shí)現(xiàn)方法,結(jié)合實(shí)例形式較為詳細(xì)的分析了Python函數(shù)裝飾器的概念、功能、用法及相關(guān)操作注意事項(xiàng),需要的朋友可以參考下
    2018-12-12
  • 在Python下進(jìn)行UDP網(wǎng)絡(luò)編程的教程

    在Python下進(jìn)行UDP網(wǎng)絡(luò)編程的教程

    這篇文章主要介紹了在Python下進(jìn)行UDP網(wǎng)絡(luò)編程的教程,UDP編程是Python網(wǎng)絡(luò)編程部分的基礎(chǔ)知識(shí),示例代碼基于Python2.x版本,需要的朋友可以參考下
    2015-04-04
  • Python?OpenCV實(shí)現(xiàn)簡(jiǎn)單的顏色識(shí)別功能(對(duì)紅色和藍(lán)色識(shí)別并輸出)

    Python?OpenCV實(shí)現(xiàn)簡(jiǎn)單的顏色識(shí)別功能(對(duì)紅色和藍(lán)色識(shí)別并輸出)

    Python?OpenCV可以用來(lái)進(jìn)行顏色識(shí)別,可以通過(guò)讀取圖像的像素值,來(lái)判斷像素點(diǎn)的顏色,從而實(shí)現(xiàn)顏色識(shí)別,這篇文章主要給大家介紹了關(guān)于Python?OpenCV實(shí)現(xiàn)簡(jiǎn)單的顏色識(shí)別功能(對(duì)紅色和藍(lán)色識(shí)別并輸出)的相關(guān)資料,需要的朋友可以參考下
    2023-12-12
  • python元組簡(jiǎn)單介紹

    python元組簡(jiǎn)單介紹

    這篇文章主要給大家分享中得python基礎(chǔ) 元組,元組的特點(diǎn)是一種不可變序列,一旦創(chuàng)建就不能修改,帶著些許了解和小編一起進(jìn)入文章得具體內(nèi)容吧
    2021-10-10

最新評(píng)論