婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > 關于Numpy之repeat、tile的用法總結

關于Numpy之repeat、tile的用法總結

熱門標簽:北京電銷外呼系統加盟 朝陽手機外呼系統 所得系統電梯怎樣主板設置外呼 市場上的電銷機器人 儋州電話機器人 地圖標注面積 小蘇云呼電話機器人 佛山400電話辦理 北瀚ai電銷機器人官網手機版

repeat函數的作用:①擴充數組元素 ②降低數組維度

numpy.repeat(a, repeats, axis=None):若axis=None,對于多維數組而言,可以將多維數組變化為一維數組,然后再根據repeats參數擴充數組元素;若axis=M,表示數組在軸M上擴充數組元素。

下面以3維數組為例,了解下repeat函數的使用方法:

In [1]: import numpy as np 
In [2]: arr = np.arange(12).reshape(1,4,3) 
In [3]: arr
Out[3]:
array([[[ 0,  1,  2],
        [ 3,  4,  5],
        [ 6,  7,  8],
        [ 9, 10, 11]]])

①repeats為整數N,axis=None:數組arr首先被扁平化,然后將數組arr中的各個元素 依次重復N次

In [4]: arr.repeat(2)
Out[4]:
array([ 0,  0,  1,  1,  2,  2,  3,  3,  4,  4,  5,  5,  6,  6,  7,  7,  8,
        8,  9,  9, 10, 10, 11, 11])

②repeats為整數數組rp_arr,axis=None:數組arr首先被扁平化,然后再將數組arr中元素依次重復對應rp_arr數組中元素對應次數。若rp_arr為一個值的一維數組,則數組arr中各個元素重復相同次數,否則rp_arr數組長度必須和數組arr的長度相等,否則報錯

a:rp_arr為單值一維數組,進行廣播

In [5]: arr.repeat([2])
Out[5]:
array([ 0,  0,  1,  1,  2,  2,  3,  3,  4,  4,  5,  5,  6,  6,  7,  7,  8,
        8,  9,  9, 10, 10, 11, 11])

b:rp_arr長度小于數組arr長度,無法進行廣播,報錯

In [6]: arr.repeat([2,3,4])
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
ipython-input-6-d3b52907284c> in module>()
----> 1 arr.repeat([2,3,4])

ValueError: operands could not be broadcast together with shape (12,) (3,)

c:rp_arr長度和數組arr長度相等

In [7]: arr.repeat(np.arange(12))
Out[7]:
array([ 1,  2,  2,  3,  3,  3,  4,  4,  4,  4,  5,  5,  5,  5,  5,  6,  6,
        6,  6,  6,  6,  7,  7,  7,  7,  7,  7,  7,  8,  8,  8,  8,  8,  8,
        8,  8,  9,  9,  9,  9,  9,  9,  9,  9,  9, 10, 10, 10, 10, 10, 10,
       10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11])

d:rp_arr長度大于數組arr長度,也無法廣播,報錯

In [8]: arr.repeat(np.arange(13))
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
ipython-input-8-ec8454224d1b> in module>()
----> 1 arr.repeat(np.arange(13))

ValueError: operands could not be broadcast together with shape (12,) (13,)

結論:兩個數組滿足廣播的條件是兩個數組的后緣維度(即從末尾開始算起的維度)的軸長度相等或其中一方的長度為1

③repeats為整數N,axis=M:數組arr的軸M上的每個元素重復N次,M=-1代表最后一條軸

In [9]: arr.repeat(2,axis=0)
Out[9]:
array([[[ 0,  1,  2],
        [ 3,  4,  5],
        [ 6,  7,  8],
        [ 9, 10, 11]],
 
       [[ 0,  1,  2],
        [ 3,  4,  5],
        [ 6,  7,  8],
        [ 9, 10, 11]]])
In [12]: arr.repeat(2,axis=-1)#arr.repeat(2,axis=-1)等同于arr.repeat(2,axis=2)
Out[12]:
array([[[ 0,  0,  1,  1,  2,  2],
        [ 3,  3,  4,  4,  5,  5],
        [ 6,  6,  7,  7,  8,  8],
        [ 9,  9, 10, 10, 11, 11]]])

④repeats為整數數組rp_arr,axis=M:把數組arr1軸M上的元素依次重復對應rp_arr數組中元素對應次數。若rp_arr為一個值的一維數組,則數組arr1軸M上的各個元素重復相同次數,否則rp_arr數組長度必須和數組arr1軸M的長度相等,否則報錯

a:rp_arr長度和數組arr1軸M上長度相等

在軸0上擴充數組元素

In [13]: arr1 = np.arange(24).reshape(4,2,3) 
In [14]: arr1
Out[14]:
array([[[ 0,  1,  2],
        [ 3,  4,  5]],
 
       [[ 6,  7,  8],
        [ 9, 10, 11]],
 
       [[12, 13, 14],
        [15, 16, 17]],
 
       [[18, 19, 20],
        [21, 22, 23]]])
 
In [15]: arr1.repeat((1,2,3,4),axis=0)
Out[15]:
array([[[ 0,  1,  2],
        [ 3,  4,  5]],
 
       [[ 6,  7,  8],
        [ 9, 10, 11]],
 
       [[ 6,  7,  8],
        [ 9, 10, 11]],
 
       [[12, 13, 14],
        [15, 16, 17]],
 
       [[12, 13, 14],
        [15, 16, 17]],
 
       [[12, 13, 14],
        [15, 16, 17]],
 
       [[18, 19, 20],
        [21, 22, 23]],
 
       [[18, 19, 20],
        [21, 22, 23]],
 
       [[18, 19, 20],
        [21, 22, 23]],
 
       [[18, 19, 20],
        [21, 22, 23]]])

在軸1上擴充數組元素

In [19]: arr1.repeat([1,2],axis=1)
Out[19]:
array([[[ 0,  1,  2],
        [ 3,  4,  5],
        [ 3,  4,  5]],
 
       [[ 6,  7,  8],
        [ 9, 10, 11],
        [ 9, 10, 11]],
 
       [[12, 13, 14],
        [15, 16, 17],
        [15, 16, 17]],
 
       [[18, 19, 20],
        [21, 22, 23],
        [21, 22, 23]]])

b:rp_arr為單值數組時,進行廣播

In [20]: arr1.repeat([2],axis=0)
Out[20]:
array([[[ 0,  1,  2],
        [ 3,  4,  5]],
 
       [[ 0,  1,  2],
        [ 3,  4,  5]],
 
       [[ 6,  7,  8],
        [ 9, 10, 11]],
 
       [[ 6,  7,  8],
        [ 9, 10, 11]],
 
       [[12, 13, 14],
        [15, 16, 17]],
 
       [[12, 13, 14],
        [15, 16, 17]],
 
       [[18, 19, 20],
        [21, 22, 23]],
 
       [[18, 19, 20],
        [21, 22, 23]]])

c:rp_arr和數組arr1某軸不滿足廣播條件,則報錯

In [21]: arr1.repeat((1,2,3),axis=0)
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
ipython-input-21-8ae4dc97e410> in module>()
----> 1 arr1.repeat((1,2,3),axis=0)

ValueError: operands could not be broadcast together with shape (4,) (3,)

tile函數兩個作用:①擴充數組元素 ②提升數組維度

numpy.tile(A, reps):根據reps中元素擴充數組A中對應軸上的元素

①reps為整數N:可以把整數N理解成含一個元素N的序列reps,若數組.ndim大于reps序列的長度,則需在reps序列的索引為0的位置開始添加元素1,直到reps的長度和數組的維度數相等,然后數組各軸上的元素依次重復reps序列中元素對應的次數

對于一維數組而言:是整體數組重復N次,從數組的最后一位置開始重復,注意與repeat函數的區別

In [26]: arr3 = np.arange(4) 
In [27]: arr3
Out[27]: array([0, 1, 2, 3]) 
In [28]: np.tile(arr3,2)
Out[28]: array([0, 1, 2, 3, 0, 1, 2, 3])

對多維數組而言:arr2.ndim=3,,reps=[2,],可以看出數組的長度大于序列reps的長度,因此需要向reps中添加元素,變成reps=[1,1,2],然后arr2數組再根據reps中的元素重復其對應軸上的元素,reps=[1,1,2]代表數組arr2在軸0上各個元素重復1次,在軸1上的各個元素重復1次,在軸1上的各個元素重復2次

In [29]: arr2 = np.arange(24).reshape(4,2,3) 
In [30]: arr2
Out[30]:
array([[[ 0,  1,  2],
        [ 3,  4,  5]],
 
       [[ 6,  7,  8],
        [ 9, 10, 11]],
 
       [[12, 13, 14],
        [15, 16, 17]],
 
       [[18, 19, 20],
        [21, 22, 23]]])
 
In [31]: np.tile(arr2,2)
Out[31]:
array([[[ 0,  1,  2,  0,  1,  2],
        [ 3,  4,  5,  3,  4,  5]],
 
       [[ 6,  7,  8,  6,  7,  8],
        [ 9, 10, 11,  9, 10, 11]],
 
       [[12, 13, 14, 12, 13, 14],
        [15, 16, 17, 15, 16, 17]],
 
       [[18, 19, 20, 18, 19, 20],
        [21, 22, 23, 21, 22, 23]]])

②reps為整數序列rp_arr:若數組.ndim大于rp_arr長度,方法同①相同,若數組ndim小于rp_arr長度,則需在數組的首緣維添加新軸,直到數組的維度數和rp_arr長度相等,然后數組各軸上的元素依次重復reps序列中元素對應的次數

a:數組維度大于rp_arr長度:需rp_arr提升為(1,2,3)

In [33]: arr2 = np.arange(24).reshape(4,2,3) 
In [34]: arr2
Out[34]:
array([[[ 0,  1,  2],
        [ 3,  4,  5]],
 
       [[ 6,  7,  8],
        [ 9, 10, 11]],
 
       [[12, 13, 14],
        [15, 16, 17]],
 
       [[18, 19, 20],
        [21, 22, 23]]])
 
In [35]: np.tile(arr2,(2,3))
Out[35]:
array([[[ 0,  1,  2,  0,  1,  2,  0,  1,  2],
        [ 3,  4,  5,  3,  4,  5,  3,  4,  5],
        [ 0,  1,  2,  0,  1,  2,  0,  1,  2],
        [ 3,  4,  5,  3,  4,  5,  3,  4,  5]],
 
       [[ 6,  7,  8,  6,  7,  8,  6,  7,  8],
        [ 9, 10, 11,  9, 10, 11,  9, 10, 11],
        [ 6,  7,  8,  6,  7,  8,  6,  7,  8],
        [ 9, 10, 11,  9, 10, 11,  9, 10, 11]],
 
       [[12, 13, 14, 12, 13, 14, 12, 13, 14],
        [15, 16, 17, 15, 16, 17, 15, 16, 17],
        [12, 13, 14, 12, 13, 14, 12, 13, 14],
        [15, 16, 17, 15, 16, 17, 15, 16, 17]],
 
       [[18, 19, 20, 18, 19, 20, 18, 19, 20],
        [21, 22, 23, 21, 22, 23, 21, 22, 23],
        [18, 19, 20, 18, 19, 20, 18, 19, 20],
        [21, 22, 23, 21, 22, 23, 21, 22, 23]]])

b:數組的維度小于rp_arr的長度:需在數組的首緣維度新增加一條軸,使其shape變為(1,4,2,3)

In [36]: np.tile(arr2,(2,1,1,3))
Out[36]:
array([[[[ 0,  1,  2,  0,  1,  2,  0,  1,  2],
         [ 3,  4,  5,  3,  4,  5,  3,  4,  5]],
 
        [[ 6,  7,  8,  6,  7,  8,  6,  7,  8],
         [ 9, 10, 11,  9, 10, 11,  9, 10, 11]],
 
        [[12, 13, 14, 12, 13, 14, 12, 13, 14],
         [15, 16, 17, 15, 16, 17, 15, 16, 17]],
 
        [[18, 19, 20, 18, 19, 20, 18, 19, 20],
         [21, 22, 23, 21, 22, 23, 21, 22, 23]]],
 
 
       [[[ 0,  1,  2,  0,  1,  2,  0,  1,  2],
         [ 3,  4,  5,  3,  4,  5,  3,  4,  5]],
 
        [[ 6,  7,  8,  6,  7,  8,  6,  7,  8],
         [ 9, 10, 11,  9, 10, 11,  9, 10, 11]],
 
        [[12, 13, 14, 12, 13, 14, 12, 13, 14],
         [15, 16, 17, 15, 16, 17, 15, 16, 17]],
 
        [[18, 19, 20, 18, 19, 20, 18, 19, 20],
         [21, 22, 23, 21, 22, 23, 21, 22, 23]]]])

numpy的repeat和tile 用來復制數組

repeat和tile都可以用來復制數組的,但是有一些區別

關鍵區別在于repeat是對于元素的復制,tile是以整個數組為單位的 ,repeat復制時元素依次復制,注意不要用錯,區別類似于[1,1,2,2]和[1,2,1,2]

repeat

用法

np.repeat(a, repeats, axis=None)

重復復制數組a的元素,元素的定義與axis有關,axis不指定時,數組會被展開進行復制,每個元素就是一個值,指定axis時,就是aixis指定維度上的一個元素

a = np.array([[1,2], 
                      [3,4]])

不指定axis,默認None,這時候數組會被展開成1維,再進行復制

np.repeat(a, 2)  # 所有元素依次復制相同的次數


參數是列表

np.repeat(a, [1, 2, 1, 2])  # 如果第二個參數是列表,列表長度必須和a的復制可選元素數目相等,這里都是4

指定axis

指定時,就是指定了復制元素沿的維度,這時候就不會把數組展平,會維持原來的維度數

np.repeat(a, 2,  axi=0)  # 所有沿著0維的元素依次復制相同的次數

np.repeat(a, [1, 2], axis=1)  # 第二個參數是列表,列表長度必須和a的復制可選元素數目相等,這里是2

結果如下,復制元素從第1維度算,可以看到第一列被復制了一次,第二列被復制了兩次

tile

用法

np.tile(a, repeats)

復制數組,repeats可以是整數或者元組、數組

repeats是整數

示例如下,它會將數組復制兩份,并且在最后一維將兩個元素疊加在一起,數組的維數不變,最后一維根據復制次數加倍

repeats是列表或元組

如果列表長度是1,和整數時相同。

列表長度不為1時,列表從后向前看,最后一項是2,所以復制兩個數組,在最后一維進行疊加,倒數第二項是3,將前步的結果進行復制,并在倒數第二維,結果如下

當列表的長度超過數組的維數時,和前面類似,從后向前復制,復制結果會增加維度與列表的維數匹配,結果如下,在上面的基礎上,增加了一維

復制結果的shape

但是對于 簡單的單個數組重復,個人更喜歡使用stack和concatenate將同一個數組堆疊起來

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

您可能感興趣的文章:
  • Python Numpy數組擴展repeat和tile使用實例解析
  • python3中numpy函數tile的用法詳解
  • python numpy數組中的復制知識解析

標簽:定西 商丘 云南 酒泉 龍巖 寧夏 金融催收 江蘇

巨人網絡通訊聲明:本文標題《關于Numpy之repeat、tile的用法總結》,本文關鍵詞  關于,Numpy,之,repeat,tile,的,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《關于Numpy之repeat、tile的用法總結》相關的同類信息!
  • 本頁收集關于關于Numpy之repeat、tile的用法總結的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    ww久久中文字幕| 亚洲午夜久久久久| 亚洲精品国产视频| 欧美亚洲自拍偷拍| 日韩电影在线观看网站| 国产精品无遮挡| 在线视频观看一区| 久久成人18免费观看| 欧美哺乳videos| 在线观看区一区二| 国产精品综合久久| 亚洲成国产人片在线观看| 国产女人18毛片水真多成人如厕 | 午夜精品aaa| 欧美一区二区播放| av爱爱亚洲一区| 日本不卡视频一二三区| 国产精品盗摄一区二区三区| 欧美r级在线观看| 欧美一区二区三区色| youjizz久久| 精品一区二区三区影院在线午夜| 亚洲一区二区三区爽爽爽爽爽| 久久综合给合久久狠狠狠97色69| 国产一区二区精品久久99| 激情五月播播久久久精品| 国产精品欧美经典| 精品国产青草久久久久福利| 欧美日韩国产三级| 成人app网站| 国产sm精品调教视频网站| 麻豆91精品91久久久的内涵| 亚洲一区二区四区蜜桃| 亚洲美女区一区| 中文字幕日韩一区二区| 国产免费成人在线视频| 久久综合99re88久久爱| 日韩免费性生活视频播放| 91黄色激情网站| 99精品国产一区二区三区不卡| 自拍偷自拍亚洲精品播放| 国产亚洲综合性久久久影院| 欧美高清精品3d| 欧美日韩黄色影视| 欧美日韩在线一区二区| 欧美日韩中字一区| 成人美女在线观看| 国产99精品在线观看| 激情文学综合网| www.视频一区| 91丝袜美腿高跟国产极品老师| 亚洲综合在线免费观看| 国产日韩v精品一区二区| 日本一二三不卡| 日韩中文字幕亚洲一区二区va在线| 91精品一区二区三区在线观看| 精品污污网站免费看| 色综合久久中文字幕| 国产成人亚洲综合色影视| 国产精品一区2区| 国产一区 二区| 成人h动漫精品一区二区| 91在线国产观看| 欧美自拍丝袜亚洲| 欧美最猛性xxxxx直播| 欧美一区2区视频在线观看| 欧美r级电影在线观看| 2020国产精品久久精品美国| 国产精品女主播av| 亚洲在线观看免费| 水蜜桃久久夜色精品一区的特点| 日韩不卡一区二区| 国产精品一区二区三区四区 | 婷婷中文字幕综合| 免费成人小视频| 国产成人精品一区二区三区四区 | 美女爽到高潮91| 经典三级一区二区| 成人黄色小视频| 国产精品影视在线| 色狠狠一区二区三区香蕉| 欧美美女一区二区在线观看| 国产日韩欧美精品一区| 亚洲精品高清在线观看| 美国欧美日韩国产在线播放| av电影一区二区| 色综合欧美在线| 日韩一级欧美一级| 亚洲天堂2014| 麻豆91在线播放| 色狠狠桃花综合| 日韩视频免费观看高清完整版 | 一区二区三区四区乱视频| 一区二区三区日韩精品视频| 亚洲影视在线观看| 免费在线观看成人| 91亚洲精华国产精华精华液| 制服丝袜亚洲色图| 国产精品久久久久久久久快鸭| 国产精品久久久久一区二区三区| 亚洲成a人片在线观看中文| 国产成人精品影视| 欧美一区二区在线免费观看| 一区二区在线观看视频| 国产91露脸合集magnet| 91一区二区三区在线播放| www国产精品av| 亚洲电影一区二区| 成人ar影院免费观看视频| 欧美成人精品高清在线播放| 亚洲一级二级三级| 99久久精品免费看| 国产欧美一区二区三区在线老狼| 蜜臀99久久精品久久久久久软件| zzijzzij亚洲日本少妇熟睡| 精品国产网站在线观看| 九九国产精品视频| 欧美一区二区三区系列电影| 亚洲二区视频在线| 91麻豆自制传媒国产之光| 久久综合丝袜日本网| 日韩精品电影一区亚洲| 精品va天堂亚洲国产| 又紧又大又爽精品一区二区| 欧美艳星brazzers| 日韩和欧美的一区| 国产亚洲一二三区| 欧美在线免费视屏| 日本91福利区| 国产欧美日韩在线| www..com久久爱| 免费观看30秒视频久久| 国产精品美女一区二区三区 | 亚洲三级电影网站| 7777精品伊人久久久大香线蕉 | 亚洲激情在线播放| 精品久久久久99| 国产成人在线看| 视频一区国产视频| 日本一区二区成人在线| 日韩视频123| 日本高清不卡一区| 国产精品18久久久久久久久| 日韩av午夜在线观看| 国产精品色婷婷| 精品精品国产高清a毛片牛牛| 成人国产亚洲欧美成人综合网| 美女视频黄 久久| 亚洲日穴在线视频| 国产日韩欧美不卡| 日韩欧美一区在线观看| 色一情一乱一乱一91av| 国产福利一区在线观看| 天天做天天摸天天爽国产一区| 亚洲三级在线播放| 久久日韩精品一区二区五区| 欧美一级视频精品观看| 一本色道久久综合亚洲aⅴ蜜桃 | 国产成人亚洲综合a∨猫咪| 奇米精品一区二区三区四区 | 一本色道久久综合亚洲aⅴ蜜桃| 久久国内精品视频| 日日夜夜精品视频免费| 亚洲免费av网站| 亚洲欧美色一区| 中文字幕欧美国产| 日本一区二区三区dvd视频在线| 日韩欧美亚洲一区二区| 在线观看成人小视频| 一本色道久久综合亚洲aⅴ蜜桃 | 日韩精品一区二区在线观看| 欧美精品黑人性xxxx| 99久久99久久久精品齐齐| 成人三级伦理片| 九一久久久久久| 久久国产精品无码网站| 狠狠色2019综合网| 另类小说视频一区二区| 久久99在线观看| 男男视频亚洲欧美| 久久电影网电视剧免费观看| 狠狠色综合日日| 久久99国内精品| 国产精品白丝jk黑袜喷水| 久久国内精品自在自线400部| 激情亚洲综合在线| 狠狠色综合色综合网络| 国产999精品久久久久久| 成熟亚洲日本毛茸茸凸凹| 成人精品国产一区二区4080| 色欲综合视频天天天| 日本高清无吗v一区| 欧美区在线观看| 日韩一级大片在线观看| 久久久久久97三级| 精品欧美乱码久久久久久| 国产亚洲短视频| 亚洲男人的天堂在线aⅴ视频| 一区二区三区中文在线观看| 日韩激情视频在线观看|