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

Numpy之如何改變數(shù)組形狀

 更新時(shí)間:2023年06月25日 09:39:01   作者:大笨牛@  
這篇文章主要介紹了Numpy之如何改變數(shù)組形狀問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

前言

本篇總結(jié)、介紹數(shù)組的基本操作之一——改變數(shù)組形狀 。

1. reshape

numpy.reshape(a, newshape, order=‘C')

在不改變數(shù)據(jù)的情況下為數(shù)組賦予新的形狀

  • a:類數(shù)組(array_like)。待重塑數(shù)組
  • newshape:整數(shù)(一維數(shù)組)或者整數(shù)列表/元組(高維數(shù)組)等。重塑之后的數(shù)組形狀(shape)。需要注意的是重塑之后的數(shù)組形狀要與待重塑數(shù)組的形狀相容
  • order:{‘C’, ‘F’, ‘A’},可選參數(shù)。數(shù)據(jù)在計(jì)算機(jī)內(nèi)存中的存儲(chǔ)順序
>>> arr1 = np.arange(8)
>>> arr1
array([0, 1, 2, 3, 4, 5, 6, 7])
## 打印arr1形狀
>>> arr1.shape
(8,)
# 將arr1變換為二維數(shù)組
>>> arr2 = np.reshape(arr1,(2,4))
>>> arr2
array([[0, 1, 2, 3],
       [4, 5, 6, 7]])
## 打印arr2形狀
>>> arr2.shape
(2, 4)
# 將arr1變換為三維數(shù)組
>>> arr3 = np.reshape(arr1,(2,2,2))
>>> arr3
array([[[0, 1],
        [2, 3]],
       [[4, 5],
        [6, 7]]])
## 打印arr3形狀
>>> arr3.shape
(2, 2, 2)
# 將arr3轉(zhuǎn)換為一維數(shù)組
>>> arr4 = np.reshape(arr3,8)
>>> arr4
array([0, 1, 2, 3, 4, 5, 6, 7])
## 打印arr4形狀
>>> arr4.shape
(8,)
# 重塑之后的數(shù)組形狀要與待重塑數(shù)組的形狀相容,否則報(bào)錯(cuò)
>>> arr5 = np.reshape(arr1,(3,3))
ValueError: cannot reshape array of size 8 into shape (3,3)

注釋: 

newshape參數(shù)的其中一維可以是-1,表示該維度上的長度會(huì)自動(dòng)根據(jù)數(shù)組的長度及其余維度的長度自動(dòng)推斷出來。

我們看一下下面的例子:

>>> arr1 = np.arange(8)
>>> arr1
array([0, 1, 2, 3, 4, 5, 6, 7])
>>> arr2 = np.reshape(arr1,(2,-1))
>>> arr2
array([[0, 1, 2, 3],
       [4, 5, 6, 7]])

只能其中一維為-1:

>>> arr1 = np.arange(8)
>>> arr1
array([0, 1, 2, 3, 4, 5, 6, 7])
>>> arr2 = np.reshape(arr1,(2,-1,-1))
ValueError: can only specify one unknown dimension

另外,需要注意numpy.reshape(a,(1,-1))與numpy.reshape(a,(-1,1))以及numpy.reshape(a,-1)的區(qū)別:

>>> arr1 = np.arange(8)
>>> arr1
array([0, 1, 2, 3, 4, 5, 6, 7])
# numpy.reshape(a,(1,-1))
>>> arr2 = np.reshape(arr1,(1,-1))
>>> arr2
array([[0, 1, 2, 3, 4, 5, 6, 7]])
>>> arr2.shape
(1, 8)
# numpy.reshape(a,(-1,1))
>>> arr3 = np.reshape(arr1,(-1,1))
>>> arr3
array([[0],
       [1],
       [2],
       [3],
       [4],
       [5],
       [6],
       [7]])
>>> arr3.shape
(8, 1)
# numpy.reshape(a,-1)
>>> arr4 = np.reshape(arr3,-1)
>>> arr4
array([0, 1, 2, 3, 4, 5, 6, 7])
>>> arr4.shape
(8,)

注釋:

每個(gè)Numpy數(shù)組(ndarray)的實(shí)例也都有自己的reshape方法(注意與函數(shù)reshape區(qū)別),其語法如下:

a.reshape(shape, order=‘C’):在不改變數(shù)據(jù)的情況下為數(shù)組賦予新的形狀(a為Numpy數(shù)組實(shí)例)

無論從語法還是功能上來說,Numpy數(shù)組的reshape方法和Numpy的reshape函數(shù)都一樣。

兩者的主要區(qū)別在于:

(1)Numpy的reshape函數(shù)可以直接對諸如python列表對象進(jìn)行操作(但返回的依然是Numpy ndarray對象),而Numpy數(shù)組的reshape方法則不行。

(2)Numpy數(shù)組的reshape方法支持形狀(shape)參數(shù)的每個(gè)元素作為單獨(dú)的參數(shù)傳入,而Numpy的reshape函數(shù)不行。

我們先來看一下第一點(diǎn):

# numpy.reshape函數(shù)
>>> list1 = [0,1,2,3,4,5,6,7,8]
>>> arr1 = np.reshape(list1,(3,3))
>>> arr1
array([[0, 1, 2],
       [3, 4, 5],
       [6, 7, 8]])
# ndarray.reshape方法
>>> list1.reshape(list1,(3,3))
AttributeError: 'list' object has no attribute 'reshape'

我們再來看一下第二點(diǎn):

# numpy.reshape函數(shù)
## 形狀參數(shù)作為一個(gè)整體傳入
>>> arr1 = np.arange(8)
>>> np.reshape(arr1,(2,4))
array([[0, 1, 2, 3],
       [4, 5, 6, 7]])
## 形狀參數(shù)單獨(dú)分開傳入
>>> np.reshape(arr1,2,4)
TypeError: order must be str, not int
# ndarray.reshape方法
## 形狀參數(shù)作為一個(gè)整體傳入
>>> arr1 = np.arange(8)
>>> arr1.reshape((2,4))
array([[0, 1, 2, 3],
       [4, 5, 6, 7]])
## 形狀參數(shù)的元素單獨(dú)傳入
>>> arr1.reshape(2,4)
array([[0, 1, 2, 3],
       [4, 5, 6, 7]])

注釋: 

numpy.reshape和ndarray.reshape都不會(huì)改變原數(shù)組的形狀。

2. ravel

numpy.ravel(a, order=‘C')

返回展平成一維的數(shù)組元素。

一般返回的是數(shù)組視圖(view),需要的時(shí)候(例如order改變)才會(huì)返回?cái)?shù)組的副本(copy)

  • a:類數(shù)組
  • order:{‘C’,’F’, ‘A’, ‘K’},可選參數(shù)

注釋:

numpy.ravel和ndarray.ravel以及ndarray.reshape(-1)等同。

>>> arr1 = np.arange(8).reshape(2,2,2)
>>> arr1
array([[[0, 1],
        [2, 3]],
       [[4, 5],
        [6, 7]]])
>>> np.ravel(arr1)
array([0, 1, 2, 3, 4, 5, 6, 7])
>>> arr1.ravel()
array([0, 1, 2, 3, 4, 5, 6, 7])
>>> arr1.reshape(-1)
array([0, 1, 2, 3, 4, 5, 6, 7])

3. ndarray.flatten

ndarray.flatten(order=‘C')

返回坍塌成一維的數(shù)組的副本

  • order:{‘C’, ‘F’, ‘A’, ‘K’},可選參數(shù)
>>> arr1 = np.arange(8).reshape(2,2,2)
>>> arr1
array([[[0, 1],
        [2, 3]],
       [[4, 5],
        [6, 7]]])
>>> arr1.flatten()
array([0, 1, 2, 3, 4, 5, 6, 7])

注釋:

有關(guān)ravel和ndarray.flatten的區(qū)別和聯(lián)系:

  • numpy.ravel、ndarray.ravel、ndarray.reshape(-1)以及ndarray.flatten都可以返回展平成一維的數(shù)組元素
  • numpy.ravel、ndarray.ravel、ndarray.reshape(-1)返回的是數(shù)組的視圖,而ndarray.flatten返回的是數(shù)組的副本
>>> arr1 = np.arange(8).reshape(2,2,2)
>>> arr1
array([[[0, 1],
        [2, 3]],
       [[4, 5],
        [6, 7]]])
>>> arr2 = arr1.reshape(-1)
>>> arr2
array([0, 1, 2, 3, 4, 5, 6, 7])
>>> arr3 = arr1.ravel()
>>> arr3
array([0, 1, 2, 3, 4, 5, 6, 7])
>>> arr4 = arr1.flatten()
>>> arr4
array([0, 1, 2, 3, 4, 5, 6, 7])
>>> arr5 = arr1.ravel(order='F')
>>> arr5
array([0, 4, 2, 6, 1, 5, 3, 7])
>>> arr1[0][0][1] = -1
# arr1改變后
>>> arr1
array([[[ 0, -1],
        [ 2,  3]],
       [[ 4,  5],
        [ 6,  7]]])
>>> arr2
array([ 0, -1,  2,  3,  4,  5,  6,  7])
>>> arr3
array([ 0, -1,  2,  3,  4,  5,  6,  7])
>>> arr4
array([0, 1, 2, 3, 4, 5, 6, 7])
>>> arr5
array([0, 4, 2, 6, 1, 5, 3, 7])

總結(jié)

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

Reference

[1]: https://numpy.org/doc/stable/reference/routines.array-manipulation.html

[2]: https://www.runoob.com/numpy/numpy-copies-and-views.html

相關(guān)文章

  • numpy 返回函數(shù)的上三角矩陣實(shí)例

    numpy 返回函數(shù)的上三角矩陣實(shí)例

    今天小編就為大家分享一篇numpy 返回函數(shù)的上三角矩陣實(shí)例,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-11-11
  • Numpy之random函數(shù)使用學(xué)習(xí)

    Numpy之random函數(shù)使用學(xué)習(xí)

    這篇文章主要介紹了Numpy之random使用學(xué)習(xí),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-01-01
  • Python繪制移動(dòng)均線方法 含源代碼

    Python繪制移動(dòng)均線方法 含源代碼

    上一篇文章我們介紹了Python繪制專業(yè)的K線圖,講解了數(shù)據(jù)獲取、K線圖繪制及成交量繪制等內(nèi)容。本篇將在上一篇的基礎(chǔ)上,繼續(xù)講解移動(dòng)均線的繪制,需要的朋友可以參考下
    2021-10-10
  • python中的RSA加密與解密實(shí)例解析

    python中的RSA加密與解密實(shí)例解析

    這篇文章主要介紹了python中的RSA加密與解密實(shí)例解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-11-11
  • python正則表達(dá)式用法超詳細(xì)講解大全

    python正則表達(dá)式用法超詳細(xì)講解大全

    正則表達(dá)式是一種用來匹配字符串的強(qiáng)有力的武器,利用字符來匹配字符的思想,基于顯示規(guī)則進(jìn)行模式匹配,可以高效組合成不同樣式的字符串,下面這篇文章主要給大家介紹了關(guān)于python正則表達(dá)式用法超詳細(xì)講解的相關(guān)資料,需要的朋友可以參考下
    2022-10-10
  • Python-UV多環(huán)境管理的方法

    Python-UV多環(huán)境管理的方法

    這篇文章主要介紹了Python-UV多環(huán)境管理的方法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2025-05-05
  • Python英文詞頻統(tǒng)計(jì)(哈姆雷特)程序示例代碼

    Python英文詞頻統(tǒng)計(jì)(哈姆雷特)程序示例代碼

    在文本處理方面,Python也有著得天獨(dú)厚的優(yōu)勢,不僅提供了多種字符串操作函數(shù),而且還可以使用各種開源庫來處理文本,下面這篇文章主要給大家介紹了關(guān)于Python英文詞頻統(tǒng)計(jì)(哈姆雷特)程序示例的相關(guān)資料,需要的朋友可以參考下
    2023-06-06
  • python numpy 矩陣堆疊實(shí)例

    python numpy 矩陣堆疊實(shí)例

    今天小編就為大家分享一篇python numpy 矩陣堆疊實(shí)例,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-01-01
  • python opencv實(shí)現(xiàn)圖片缺陷檢測(講解直方圖以及相關(guān)系數(shù)對比法)

    python opencv實(shí)現(xiàn)圖片缺陷檢測(講解直方圖以及相關(guān)系數(shù)對比法)

    這篇文章主要介紹了python opencv 圖片缺陷檢測,主要講解直方圖以及相關(guān)系數(shù)對比法,本文通過實(shí)例截圖給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-04-04
  • Python第三方常用模塊openpyxl的簡單介紹

    Python第三方常用模塊openpyxl的簡單介紹

    openpyxl模塊是一個(gè)讀寫Excel?2010文檔的Python庫,如果要處理更早格式的Excel文檔,需要用到額外的庫,openpyxl是一個(gè)比較綜合的工具,能夠同時(shí)讀取和修改Excel文檔,下面這篇文章主要給大家介紹了關(guān)于Python第三方常用模塊openpyxl的相關(guān)資料,需要的朋友可以參考下
    2022-08-08

最新評論

高安市| 五家渠市| 固安县| 墨江| 咸丰县| 车险| 虞城县| 旬邑县| 承德县| 和龙市| 蓬溪县| 象州县| 东明县| 宝坻区| 北宁市| 敖汉旗| 广元市| 广饶县| 景宁| 张北县| 开化县| 大理市| 七台河市| 图们市| 乡城县| 内丘县| 彩票| 汾西县| 余姚市| 邵东县| 阆中市| 交口县| 饶河县| 金湖县| 大宁县| 兴文县| 松溪县| 介休市| 时尚| 罗源县| 高尔夫|