第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在2D數(shù)組和順序像素中創(chuàng)建移動窗口的最佳方法是什么

在2D數(shù)組和順序像素中創(chuàng)建移動窗口的最佳方法是什么

明月笑刀無情 2021-03-23 20:20:44
我是Python的新手,因此需要使用它進行一些棘手的2D數(shù)組操作。我不確定最好的解決方法?;旧?,我從0到1之間的值數(shù)組開始。我需要有一個移動的2x2窗口以應(yīng)用于2D數(shù)組(編輯:該數(shù)組是2D圖像;即200x200像素左右),并且在每個2x2窗口中,根據(jù)數(shù)組值權(quán)重(即2x2中的最小像元變?yōu)?,然后下一個最小值變?yōu)?,依此類推)我可以看到如何通過嵌套循環(huán)提取2x2窗口。那是最好的方法嗎?更棘手的是如何進行訂購分配。我以為在窗口子數(shù)組上迭代使用numpy.where(subarray.min),但我看不到如何在返回的返回位置進行GET操作!我不確定沒有更好的方法可以解決此問題。建議?指向如何使用NumPy進行復(fù)雜的,混亂的數(shù)組操作的指針?
查看完整描述

3 回答

?
慕桂英546537

TA貢獻1848條經(jīng)驗 獲得超10個贊

因此,您將從這樣的數(shù)組開始:


In [1]: import numpy as np


In [2]: a = np.arange(20).reshape((10,-1))


In [3]: a

Out[3]: 

array([[ 0,  1],

       [ 2,  3],

       [ 4,  5],

       [ 6,  7],

       [ 8,  9],

       [10, 11],

       [12, 13],

       [14, 15],

       [16, 17],

       [18, 19]])

我想您正在尋找reshapeand argsort。


使用reshape成員函數(shù),您可以更改形狀而無需更改順序:


In [4]: a.reshape((-1,4))

Out[4]: 

array([[ 0,  1,  2,  3],

       [ 4,  5,  6,  7],

       [ 8,  9, 10, 11],

       [12, 13, 14, 15],

       [16, 17, 18, 19]])

重塑需要一個元組。我喜歡將其視為(行數(shù),數(shù)字或列數(shù))。在這種情況下,(-1,4)表示:使用4列(因此每行中有四個數(shù)字),然后根據(jù)數(shù)據(jù)量計算行數(shù)。


使用argsort您可以獲得所需的數(shù)組。


In [2]: import numpy as np


In [3]: d = np.random.random((10, 2)).reshape((-1,4))


In [4]: d

Out[4]: 

array([[ 0.65945195,  0.1907593 ,  0.1630845 ,  0.76949532],

       [ 0.90823488,  0.71518689,  0.38422877,  0.77824007],

       [ 0.31453967,  0.76592537,  0.5871099 ,  0.09306465],

       [ 0.38251335,  0.97461878,  0.97562622,  0.87532202],

       [ 0.12358359,  0.20323007,  0.397975  ,  0.615806  ]])



In [7]: e = np.array([4-np.argsort(r) for r in d])


In [8]: e

Out[8]: 

array([[2, 3, 4, 1],

       [2, 3, 1, 4],

       [1, 4, 2, 3],

       [4, 1, 3, 2],

       [4, 3, 2, 1]])

如您所見,現(xiàn)在每一行都有所需的索引。讓我們回顧一下第7行從內(nèi)到外的操作:

  • for r in d:遍歷d中的所有行。

  • 4 - np.argsort(r):argsort會在0-3范圍內(nèi)創(chuàng)建索引。因此,我們將其從4減去以達到4-1的反比范圍。在numpy數(shù)組中,對每個元素都進行了操作,因此其4 - np.array([2, 1, 0, 3])行為類似于np.array([4,4,4,4]) - np.array([2, 1, 0, 3])。

  • []:方括號之間的前幾行使它成為列表理解,這就像一個非常快速且緊湊的for循環(huán)返回列表一樣。

  • np.array:將數(shù)組列表合并為一個大數(shù)組。

然后使用另一種整形,將數(shù)據(jù)恢復(fù)為原始形狀

In [9]: e.reshape((-1,2))

Out[9]: 

array([[2, 3],

       [4, 1],

       [2, 3],

       [1, 4],

       [1, 4],

       [2, 3],

       [4, 1],

       [3, 2],

       [4, 3],

       [2, 1]])


查看完整回答
反對 回復(fù) 2021-03-26
?
不負相思意

TA貢獻1777條經(jīng)驗 獲得超10個贊

您可以執(zhí)行以下操作。假設(shè)您有一個2D矩陣:


In [1]: import numpy as np


In [2]: a = np.arange(100).reshape((-1,10))


In [3]: a

Out[3]: 

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, 24, 25, 26, 27, 28, 29],

       [30, 31, 32, 33, 34, 35, 36, 37, 38, 39],

       [40, 41, 42, 43, 44, 45, 46, 47, 48, 49],

       [50, 51, 52, 53, 54, 55, 56, 57, 58, 59],

       [60, 61, 62, 63, 64, 65, 66, 67, 68, 69],

       [70, 71, 72, 73, 74, 75, 76, 77, 78, 79],

       [80, 81, 82, 83, 84, 85, 86, 87, 88, 89],

       [90, 91, 92, 93, 94, 95, 96, 97, 98, 99]])

您可以選擇一個2x2子矩陣,如下所示:


In [4]: a[3:5, 0:2]

Out[4]: 

array([[30, 31],

       [40, 41]])

這里的模式是a[row:row+2, column:column+2]。使用上面顯示的reshape和argsort技術(shù),您可以創(chuàng)建新值。


In [5]: p = a[3:5, 0:2]


In [6]: e = 4-np.argsort(p.reshape((1,4))).reshape((2,2))


In [7]: e

Out[7]: 

array([[4, 3],

       [2, 1]])

然后,您可以將此結(jié)果放置在原始數(shù)組或副本中:


In [12]: a[3:5, 0:2] = e


In [13]: a

Out[13]: 

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, 24, 25, 26, 27, 28, 29],

       [ 4,  3, 32, 33, 34, 35, 36, 37, 38, 39],

       [ 2,  1, 42, 43, 44, 45, 46, 47, 48, 49],

       [50, 51, 52, 53, 54, 55, 56, 57, 58, 59],

       [60, 61, 62, 63, 64, 65, 66, 67, 68, 69],

       [70, 71, 72, 73, 74, 75, 76, 77, 78, 79],

       [80, 81, 82, 83, 84, 85, 86, 87, 88, 89],

       [90, 91, 92, 93, 94, 95, 96, 97, 98, 99]])

請注意,圖像的寬度和高度都必須是均勻的,才能使2x2子矩陣按預(yù)期工作...


查看完整回答
反對 回復(fù) 2021-03-26
?
慕虎7371278

TA貢獻1802條經(jīng)驗 獲得超4個贊

也許這會有所幫助[請參閱此處]


調(diào)用方式:


x = np.arange(36).reshape((6, 6))

print(x)

b = sliding_window(x, (2, 3), None, False) 

print(b)


查看完整回答
反對 回復(fù) 2021-03-26
  • 3 回答
  • 0 關(guān)注
  • 175 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號